J'ai un datepicker où je montre deux mois et je veux choisir au hasard 3 dates dans chaque mois visible
$('.date').datepicker({
minDate: new Date(),
dateFormat: 'DD, MM, d, yy',
constrainInput: true,
beforeShowDay: processDates,
numberOfMonths: 2,
showButtonPanel: true,
showOn: "button",
buttonImage: "images/calendar_icon.jpg",
buttonImageOnly: true
});
Voici mon calcul
var now = new Date();
var nowTime = parseInt(now.getTime()/1000);
var randomDateSet = {};
function getRandomSet(y,m) {
var monthIndex = "m"+y+""+m; // m20121 for Jan
if (randomDateSet[monthIndex]) return randomDateSet[monthIndex];
// generate here
.
. - I need this part
.
return randomDateSet[monthIndex];
}
function processDay(date) { // this is calculated for each day so we need a singleton for the array
var dateTime = parseInt(date.getTime()/1000);
if (dateTime <= (nowTime-86400)) {
return [false]; // earlier than today
}
var m = date.getMonth(), d = date.getDate(), y = date.getFullYear();
var randomDates = getRandomSet(y,m);
for (i = 0; i < randomDates.length; i++) {
if($.inArray((m+1) + '-' + d + '-' + y,randomDates) != -1 || new Date() > date) {
return [true,"highlight","Some message"];
}
}
return [true,"normal"]; // ordinary day
}
Peut-être me manque quelque chose, mais n'est-ce pas?
function randomDate(start, end) {
return new Date(start.getTime() + Math.random() * (end.getTime() - start.getTime()));
}
randomDate(new Date(2012, 0, 1), new Date())
new Date(+(new Date()) - Math.floor(Math.random()*10000000000))
Utiliser Moment.js && @ Demven Weir's answer pour obtenir une valeur de chaîne telle que "03/02/1975".
moment(new Date(+(new Date()) - Math.floor(Math.random()*10000000000)))
.format('MM/DD/YYYY');
NOTE: Continuez à ajouter un zéro à la fois pour augmenter la durée des années produites.
Vous pouvez convertir les dates limites en nombres entiers (Date.getTime()
), puis utiliser Math.random()
pour générer des dates aléatoires dans des limites données. Revenez ensuite à Date
objets avec Date.setTime()
.