有没有一种简单的方法来获取olain JavaScript日期(例如今天)并返回X天?

例如,如果我想计算今天前5天的日期。


当前回答

var dateOffset = (24*60*60*1000) * 5; //5 days
var myDate = new Date();
myDate.setTime(myDate.getTime() - dateOffset);

如果您在整个web应用程序中执行大量令人头疼的日期操作,DateJS将使您的生活更加轻松:

http://simonwillison.net/2007/Dec/3/datejs/

其他回答

var d=新日期();document.write('今天是:'+d.toLocaleString());d.setDate(d.getDate()-31);document.write('<br>5天前是:'+d.toLocaleString());

我喜欢用毫秒做数学。所以使用Date.now()

var newDate = Date.now() + -5*24*3600*1000; // date 5 days ago in milliseconds

如果你喜欢格式化

new Date(newDate).toString(); // or .toUTCString or .toISOString ...

注意:Date.now()在旧浏览器中不起作用(我认为是IE8)。这里是Polyfill。

2015年6月更新

@socketpair指出了我的邋遢。正如他所说:“一年中的某一天有23个小时,而由于时区的规定,有25个小时”。

为了进一步说明,如果您想计算5天前在一个时区中的本地日,并更改了日光节约,则上面的答案将不准确

假设(错误地)Date.now()为您提供当前LOCAL now时间,或使用.toString()返回本地日期,因此与UTC中的date.now()基准日期不兼容。

然而,如果你在UTC进行数学运算,这是有效的,例如

A.您希望UTC日期从现在(UTC)起5天前

var newDate = Date.now() + -5*24*3600*1000; // date 5 days ago in milliseconds UTC
new Date(newDate).toUTCString(); // or .toISOString(), BUT NOT toString

B.使用date.UTC()以UTC基准日期而不是“现在”开始

newDate = new Date(Date.UTC(2015, 3, 1)).getTime() + -5*24*3600000;
new Date(newDate).toUTCString(); // or .toISOString BUT NOT toString

我的里程数很好。js:

http://www.datejs.com/

d = new Date();
d.add(-10).days();  // subtract 10 days

美好的

网站包含此功能:

Datejs不只是解析字符串,它将字符串干净利落地分成两部分

第一个参数是开始日期,第二个参数是您希望增加或减少到该日期的天数

示例(1)-pass-1将日期减少一天

示例(2)-通过1将日期增加一天

const EditDay = (date: Date, num: number): Date => {
 return new Date(date.getTime() + num * 24 * 60 * 60 * 1000)
}

尝试以下操作:

 var d = new Date();
 d.setDate(d.getDate()-5);

注意,这将修改日期对象并返回更新日期的时间值。

var d=新日期();document.write('今天是:'+d.toLocaleString());d.setDate(d.getDate()-5);document.write('<br>5天前是:'+d.toLocaleString());