如何Date
使用 JavaScript添加当前天数。JavaScript 有像 .Net 那样的内置函数AddDay
吗?
向 JavaScript 日期添加天数
IT技术
javascript
date
datetime
time
2020-12-15 16:22:47
6个回答
您可以使用以下方法创建一个:-
Date.prototype.addDays = function(days) {
var date = new Date(this.valueOf());
date.setDate(date.getDate() + days);
return date;
}
var date = new Date();
console.log(date.addDays(5));
如有必要,这会自动增加月份。例如:
8/31 + 1 天将变成9/1。
setDate
直接使用的问题在于它是一个mutator,最好避免这种事情。ECMA 认为适合将其Date
视为可变类而不是不可变结构。
正确答案:
function addDays(date, days) {
var result = new Date(date);
result.setDate(result.getDate() + days);
return result;
}
错误答案:
此答案有时会提供正确的结果,但通常会返回错误的年份和月份。此答案唯一有效的时间是您添加天数的日期恰好是当前年份和月份。
// Don't do it this way!
function addDaysWRONG(date, days) {
var result = new Date();
result.setDate(date.getDate() + days);
return result;
}
证明/例子
var today = new Date();
var tomorrow = new Date();
tomorrow.setDate(today.getDate()+1);
小心,因为这可能很棘手。设置时tomorrow
,它仅起作用,因为它的当前值与 的年和月匹配today
。但是,设置为“32”之类的日期数字通常仍然可以正常工作以将其移至下个月。
我的简单解决方案是:
nextday=new Date(oldDate.getFullYear(),oldDate.getMonth(),oldDate.getDate()+1);
此解决方案没有夏令时问题。此外,您可以添加/减少年、月、日等的任何偏移量。
day=new Date(oldDate.getFullYear()-2,oldDate.getMonth()+22,oldDate.getDate()+61);
是正确的代码。
这些答案让我感到困惑,我更喜欢:
var ms = new Date().getTime() + 86400000;
var tomorrow = new Date(ms);
getTime() 为我们提供自 1970 年以来的毫秒数,86400000 是一天中的毫秒数。因此, ms 包含所需日期的毫秒数。
使用毫秒构造函数提供所需的日期对象。
其它你可能感兴趣的问题