今天的日期 - 使用JavaScript的30天

时间:2016-07-08 23:21:10

标签: javascript

我需要今天的日期-30天,但格式为:“2016-06-08”

我已经尝试了setDate(date.getDate() - 30); -30天。

我已尝试date.toISOString().split('T')[0]格式。

两者都有效,但不知何故不能一起使用。

4 个答案:

答案 0 :(得分:18)

setDate()不会返回Date个对象,它会返回自1970年1月1日00:00:00 UTC以来的毫秒数。你需要单独的电话:

var date = new Date();
date.setDate(date.getDate() - 30);
var dateString = date.toISOString().split('T')[0]; // "2016-06-08"

答案 1 :(得分:3)

请注意,最好使用moment.js之类的东西,而不是重新发明轮子。然而,没有库的直接JS解决方案就像:

var date = new Date();
date.setDate(date.getDate() - 30); 

date设置为30天前。 (JS自动计算闰年,并在不到30天的时间内滚动,并进入上一年)

现在只需输出它就可以了(让您更好地控制输出)。注意我们在前面加一个'0',使小于10的数字为0前缀

var dateString = date.getFullYear() + '-' + ("0" + (date.getMonth() + 1)).slice(-2) + '-' + ("0" + date.getDate()).slice(-2)

答案 2 :(得分:1)

你说这两条线对你有效,而你的问题就是将它们结合起来。这是你如何做到的:

var date = new Date();
date.setDate(date.getDate() - 30);
document.getElementById("result").innerHTML = date.toISOString().split('T')[0];
<div id="result"></div>

如果你真的想要减去30天,那么这段代码很好,但如果你想减去一个月,那么显然这段代码不起作用,最好使用像moment.js这样的库,就像其他的一样建议不要试图自己实施。

答案 3 :(得分:0)

今天的日期 -30 天,格式如下:“YYYY-MM-DD”:

var date = new Date();
date.setDate(date.getDate() - 30);
var dateString = date.toISOString().split('T')[0]; // "2021-02-05"

今天的日期 -30 天,但以这种格式获取所有天数:“YYYY-MM-DD”:

var daysDate = [];
for(var i = 1; i<= 30; i++) {
    var date = new Date();
    date.setDate(date.getDate() - i);
    daysDate.push(date.toISOString().split('T')[0]); // ["2021-02-05", "2021-02-04", ...]
}