22

我需要将 Javascript 日期减少 1 天,以便它正确回滚数月/数年。也就是说,如果我有一个“今天”的日期,我想得到“昨天”的日期。

当我这样做时,似乎总是需要更多的代码,所以我想知道是否有更简单的方法。

最简单的方法是什么?

[编辑:为了避免在下面的答案中混淆,这是一个JavaScript问题,而不是 Java 问题。]

4

7 回答 7

33

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

console.log(d);

于 2008-08-28T09:56:01.370 回答
5
var today = new Date();
var yesterday = new Date().setDate(today.getDate() -1);
于 2008-08-28T09:55:16.643 回答
5
 day.setDate(day.getDate() -1); //will be wrong

这将返回错误的一天。在 UTC -03:00 下,检查

var d = new Date(2014,9,19);
d.setDate(d.getDate()-1);// will return Oct 17

更好的使用:

var n = day.getTime();
n -= 86400000;
day = new Date(n); //works fine for everything
于 2014-08-04T08:21:09.690 回答
3

getDate()-1应该做的伎俩

快速示例:

var day = new Date( "January 1 2008" );
day.setDate(day.getDate() -1);
alert(day);
于 2008-08-28T09:58:49.647 回答
3
origDate = new Date();
decrementedDate = new Date(origDate.getTime() - (86400 * 1000));

console.log(decrementedDate);
于 2013-12-05T18:25:12.763 回答
1

setDate(dayValue)

dayValue是从 1 到 31 的整数,表示月份中的某天。

来自https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Date/setDate

解决您的问题(和我的问题)的行为似乎超出了规范范围。

似乎需要的是 addDate()、addMonth()、addYear() ...函数。

于 2008-12-10T17:59:36.670 回答
1

在 JS 中处理日期可能会让人头疼。所以最简单的方法是使用moment.js进行任何日期操作。

减去一天:

const date = moment().subtract(1, 'day')
于 2018-04-07T11:30:46.400 回答