Metodo elegante per generare una serie di date casuali entro due date

Ho un appuntamento in cui mostro due mesi e voglio scegliere a caso 3 date in ciascun mese visibile

$('.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 }); 

Ecco i miei calcoli

 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  date) { return [true,"highlight","Some message"]; } } return [true,"normal"]; // ordinary day } 

Forse mi manca qualcosa, ma non è questo?

 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)) 

È ansible convertire le date di confine in numeri interi ( Date.getTime() ) e quindi utilizzare Math.random() per generare date casuali all’interno di determinati limiti. Quindi torna agli oggetti Date con Date.setTime() .