在Javascript中生成两个日期和时间之间的随机日期

Yan*_*zzy 19 javascript date

我想在javascript中生成两个日期之间和两次之间的随机日期.例如,我想在今天和明天之间生成一个随机日期(上午8点到下午6点).我尝试了很多东西,但没有一个能够工作,所以我不会粘贴任何代码,因为它不起作用.有没有人做过类似的事情

function generateRandomDate(start, end) { 
    return new Date(start + Math.random() * (end - start)); 
}
Run Code Online (Sandbox Code Playgroud)

我用于生成随机日期的代码在上面发布

Pet*_*son 28

我想我明白你的意思.这将返回一个随机日期之间startend,与之间的随机小时startHourendHour(其应该在的范围内的值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;
}
Run Code Online (Sandbox Code Playgroud)

  • 开始和结束应该是什么?我尝试传递随机整数,它总是返回“Wed Dec 31 1969”,但每次我更改开始和结束时都会返回不同的时间。 (2认同)
  • 例如 `randomDate(new Date(2020, 0, 1), new Date(), 0, 24)` (2认同)

Oli*_*xon 8

因为现在每个人都在做 TypeScript。这是一个更现代的示例,其中包含如何使用它的示例。

const generateRandomDOB = (): string => {
    const random = getRandomDate(new Date('1950-02-12T01:57:45.271Z'), new Date('2001-02-12T01:57:45.271Z'))
    return random.toISOString();
}

function getRandomDate(from: Date, to: Date) {
    const fromTime = from.getTime();
    const toTime = to.getTime();
    return new Date(fromTime + Math.random() * (toTime - fromTime));
}
Run Code Online (Sandbox Code Playgroud)


Bar*_*ard 7

如果您只想要简单的日期,这是一个很好的方法,例如:('12/13/2013', '01/26/2011')

function randomDate(date1, date2){
    function randomValueBetween(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(randomValueBetween(date2,date1)).toLocaleDateString()   
    } else{
        return new Date(randomValueBetween(date1, date2)).toLocaleDateString()  

    }
}

randomDate('02/13/2013', '01/01/2000')
"1/31/2009"
randomDate()
"6/14/2001"
Run Code Online (Sandbox Code Playgroud)