Genera una data random tra due date e tempi nel Javascript

Voglio generare una data random tra due date e tra due volte in javascript. Ad esempio, voglio generare una data random (dalle 8.00 alle 18.00) tra oggi e il prossimo domani. Ho provato un integer mazzo di cose ma nessuno di loro lavora, quindi non farò incollare nessun codice perché non funziona. Qualcuno ha fatto qualcosa di simile

function generateRandomDate(start, end) { return new Date(start + Math.random() * (end - start)); } 

Il codice che sto usando per generare date casuali è pubblicato sopra

Penso di capire quello che stai dietro. Ciò restituirà una data random tra l' start e la end , con un'ora random tra startHour e endHour (che dovrebbero essere valori nell'intervallo 0-23 ).

 function randomDate(start, end, startHour, endHour) { var date = new Date(+start + Math.random() * (end - start)); var hour = startHour + Math.random() * (endHour - startHour) | 0; date.setHours(hour); return date; } 

Prova questo:

 function getRandomDate(from, to) { from = from.getTime(); to = to.getTime(); return new Date(from + Math.random() * (to - from)); } 

Durante la creazione di una data puoi anche impostare un'ora:

 var d = new Date(year, month, day, hours, minutes, seconds, milliseconds); 

Se si desidera che la data sia ad esempio tra le 8 e le 18, è sufficiente impostare un tempo random dopo avere ottenuto una data random.

Quindi in questo caso la function sarebbe simile a questa:

 function getRandomDate(fromDate, toDate, fromTime, toTime) { fromDate = fromDate.getTime(); toDate = toDate.getTime(); fromTime.setFullYear(1970,0,1); //reset the date toTime.setFullYear(1970,0,1); //because we only want a time here fromTime = fromTime.getTime(); toTime = toTime.getTime(); randomDate = new Date(fromDate + Math.random() * (toDate - fromDate)); randomTime = new Date(fromTime + Math.random() * (toTime - fromTime)); randomDate.setHours(randomTime.getHours()); randomDate.setMinutes(randomTime.getMinutes()); randomDate.setSeconds(randomTime.getSeconds()); } 

prova questo:

 var yourRandomGenerator=function(rangeOfDays,startHour,hourRange){ var today = new Date(Date.now()); return new Date(today.getYear()+1900,today.getMonth(), today.getDate()+Math.random() *rangeOfDays, Math.random()*hourRange + startHour, Math.random()*60) } console.log(yourRandomGenerator(2,8,2)); 

ecco un violino da lavoro.

È ansible utilizzare la capacità JS di convertire una Data in un timestamp integer

Ecco un semplice JSfiddle funzionante:

 function randomTime(start, end) { var diff = end.getTime() - start.getTime(); var new_diff = diff * Math.random(); var date = new Date(start.getTime() + new_diff); return date; } 

Qui è un bene se vuoi semplicemente date come: ('12 / 13/2013 ', '01, 26, 2011')

 function randomDate(date1, date2){ function getRandomArbitrary(min, max) { return Math.random() * (max - min) + min; } var date1 = date1 || '01-01-1970' var date2 = date2 || new Date().toLocaleDateString() date1 = new Date(date1).getTime() date2 = new Date(date2).getTime() if( date1>date2){ return new Date(getRandomArbitrary(date2,date1)).toLocaleDateString() } else{ return new Date(getRandomArbitrary(date1, date2)).toLocaleDateString() } } randomDate('02/13/2013', '01/01/2000') "1/31/2009" randomDate() "6/14/2001"