添加时错误的Javascript日?

时间:2016-06-27 23:09:34

标签: javascript date

我有一个javascript函数,它接收一个X个数字和一个日期,并返回Date天数X的新function addDays(theDate, numDaysToAdd) { var newDate = new Date(); return new Date(newDate.setDate(theDate.getDate() + numDaysToAdd)); }

Sat Jul 02 2016 16:03:06 GMT-0700 (Pacific Daylight Time)

我将7Thu Jun 09 2016 16:05:32 GMT-0700 (Pacific Daylight Time)的一天传递给我,但我得到的结果是var str = "Lorem #ipsum dolor sit #amet"; var hashArray = (str.match(/#(\w+)/g)); console.log(hashArray); // => [ '#ipsum', '#amet' ] console.log(Array.isArray(hashArray)); // => true 。为什么它给了我正确的日期但错误的月份?

2 个答案:

答案 0 :(得分:1)

您可以在给定日期添加毫秒数,它将生成正确的日期。

  

getTime()epoch返回毫秒。

     

offset = numDaysToAdd * 24 * 60 * 60 * 1000;

     

24:一天中的小时

     

60:一小时内的分钟

     

60:一分钟内的秒数

     

1000秒:第二次

     

Date构造函数从纪元

开始需要几毫秒
function addDays(theDate, numDaysToAdd) {
    var start = theDate.getTime();
    var offset = numDaysToAdd * 24 * 60 * 60 * 1000;
    return new Date(start + offset);
}

var today = new Date();
console.log(today, addDays(today, 10));

答案 1 :(得分:1)

问题是newDate始终是从当前日期(new Date())创建的。换句话说,如果此函数在6月执行,它将在6月生成日期,然后尝试将月份的日期设置为输入日期的偏移量。

您需要将newDate构建为theDate

的副本



function addDays(theDate, numDaysToAdd) {
    var newDate = new Date(theDate);
    newDate.setDate(theDate.getDate() + numDaysToAdd);
    return newDate;
}

var d = new Date('Sat Jul 02 2016 16:03:06 GMT-0700 (Pacific Daylight Time)');
console.log(addDays(d, 7).toString());