我需要今天的日期-30天,但格式为:“2016-06-08”
我已经尝试了setDate(date.getDate() - 30);
-30天。
我已尝试date.toISOString().split('T')[0]
格式。
两者都有效,但不知何故不能一起使用。
答案 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", ...]
}