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

时间:2015-07-13 08:22:02

标签: javascript date

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

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

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

7 个答案:

答案 0 :(得分:25)

我想我明白你的意思。这将在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;
}

答案 1 :(得分:1)

试试这个:

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

创建日期时,您也可以设置时间:

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

如果您希望日期在上午8点到下午6点之间,只需在获得随机日期后设置一个随机时间。

所以在这种情况下,函数看起来像这样:

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

答案 2 :(得分:1)

试试这个:

scanf()

here是一个工作小提琴。

答案 3 :(得分:1)

如果您只想要简单的日期,例如:('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"

答案 4 :(得分:1)

由于每个人都在做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));
}

答案 5 :(得分:0)

您可以使用JS功能将Date转换为整数时间戳

这是一个简单的工作JSfiddle

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;
}

答案 6 :(得分:0)

单个功能。

    function (line) {
   return  new Date(new Date('2019-02-12T01:57:45.271Z').getTime() + Math.random() * (new Date('2020-02-12T01:57:45.271Z').getTime() - new Date('2019-02-12T01:57:45.271Z').getTime())).toISOString(); 
} 
相关问题