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

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


当前回答

我的里程数很好。js:

http://www.datejs.com/

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

美好的

网站包含此功能:

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

其他回答

管理日期的一个简单方法是使用Moment.js

您可以使用add。实例

var startdate = "20.03.2014";
var new_date = moment(startdate, "DD.MM.YYYY");
new_date.add(5, 'days'); //Add 5 days to start date
alert(new_date);

文档http://momentjs.com/docs/#/manipulating/add/

如果你想把这一切都放在一行。

从今天起5天

//past
var fiveDaysAgo = new Date(new Date().setDate(new Date().getDate() - 5));
//future
var fiveDaysInTheFuture = new Date(new Date().setDate(new Date().getDate() + 5));

特定日期后5天

 var pastDate = new Date('2019-12-12T00:00:00');

 //past
 var fiveDaysAgo = new Date(new Date().setDate(pastDate.getDate() - 5));
 //future
 var fiveDaysInTheFuture = new Date(new Date().setDate(pastDate.getDate() + 5));

我写了一个你可以使用的函数。

函数AddOrSubactDays(startingDate,number,add){if(添加){返回新日期(newDate().setDate(startingDate.getDate()+number));}其他{返回新日期(newDate().setDate(startingDate.getDate()-number));}}console.log('Today:'+new Date());console.log('Future:'+AddOrSubactDays(new Date(),5,true));console.log('Last:'+AddOrSubactDays(new Date(),5,false));

我喜欢用毫秒做数学。所以使用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

get moment.js。所有酷孩子都使用它。它有更多的格式选项等。在哪里

var n = 5;
var dateMnsFive = moment(<your date>).subtract(n , 'day');

可选择的转换为JS Date obj以进行角度绑定。

var date = new Date(dateMnsFive.toISOString());

可选择的总体安排

var date = dateMnsFive.format("YYYY-MM-DD");

我换算成毫秒,扣除天数,否则一个月和一年都不会改变,符合逻辑

var numberOfDays = 10;//number of days need to deducted or added
var date = "01-01-2018"// date need to change
var dt = new Date(parseInt(date.substring(6), 10),        // Year
              parseInt(date.substring(3,5), 10) - 1, // Month (0-11)
              parseInt(date.substring(0,2), 10));
var new_dt = dt.setMilliseconds(dt.getMilliseconds() - numberOfDays*24*60*60*1000);
new_dt = new Date(new_dt);
var changed_date = new_dt.getDate()+"-"+(new_dt.getMonth()+1)+"-"+new_dt.getFullYear();

希望有帮助