我有一个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)
我将7
和Thu 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
。为什么它给了我正确的日期但错误的月份?
答案 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());