我需要在 JavaScript 中将日期值增加一天。
例如,我有一个日期值 2010-09-11,我需要将第二天的日期存储在 JavaScript 变量中。
如何将日期增加一天?
我需要在 JavaScript 中将日期值增加一天。
例如,我有一个日期值 2010-09-11,我需要将第二天的日期存储在 JavaScript 变量中。
如何将日期增加一天?
三种方案供您选择:
Date
对象(没有库):我之前对#1 的回答是错误的(它增加了 24 小时,没有考虑到夏令时的转换;Clever Human指出它会在东部时区的 2010 年 11 月 7 日失败)。相反,Jigar 的答案是在没有图书馆的情况下做到这一点的正确方法:
// To do it in local time
var tomorrow = new Date();
tomorrow.setDate(tomorrow.getDate() + 1);
// To do it in UTC
var tomorrow = new Date();
tomorrow.setUTCDate(tomorrow.getUTCDate() + 1);
这甚至适用于一个月(或一年)的最后一天,因为 JavaScript 日期对象在翻转方面很聪明:
var today = moment();
var tomorrow = moment(today).add(1, 'days');
(请注意,add
修改您调用它的实例,而不是返回一个新实例,因此today.add(1, 'days')
将修改today
。这就是我们从 克隆操作开始的原因var tomorrow = ...
。)
var today = new Date(); // Or Date.today()
var tomorrow = today.add(1).day();
var myDate = new Date();
//add a day to the date
myDate.setDate(myDate.getDate() + 1);
最简单的方法是转换为毫秒并添加 1000*60*60*24 毫秒,例如:
var tomorrow = new Date(today.getTime()+1000*60*60*24);
明天在纯 JS 中一行,但它很丑!
new Date(new Date().setDate(new Date().getDate() + 1))
结果如下:
Thu Oct 12 2017 08:53:30 GMT+0200 (Romance Summer Time)
此答案中的所有示例似乎都不适用于夏令时调整日。在那些日子里,一天中的小时数不是 24(它们是 23 或 25,取决于您是“向前冲”还是“后退”。)
下面的 AddDays javascript 函数说明了夏令时:
function addDays(date, amount) {
var tzOff = date.getTimezoneOffset() * 60 * 1000,
t = date.getTime(),
d = new Date(),
tzOff2;
t += (1000 * 60 * 60 * 24) * amount;
d.setTime(t);
tzOff2 = d.getTimezoneOffset() * 60 * 1000;
if (tzOff != tzOff2) {
var diff = tzOff2 - tzOff;
t += diff;
d.setTime(t);
}
return d;
}
以下是我用来测试该功能的测试:
var d = new Date(2010,10,7);
var d2 = AddDays(d, 1);
document.write(d.toString() + "<br />" + d2.toString());
d = new Date(2010,10,8);
d2 = AddDays(d, -1)
document.write("<hr /><br />" + d.toString() + "<br />" + d2.toString());
d = new Date('Sun Mar 27 2011 01:59:00 GMT+0100 (CET)');
d2 = AddDays(d, 1)
document.write("<hr /><br />" + d.toString() + "<br />" + d2.toString());
d = new Date('Sun Mar 28 2011 01:59:00 GMT+0100 (CET)');
d2 = AddDays(d, -1)
document.write("<hr /><br />" + d.toString() + "<br />" + d2.toString());