我需要获取今天往前30天的日期,格式为:"2016-06-08"
我已经尝试了setDate(date.getDate()-30);
来获取-30天的日期。
我已经尝试了date.toISOString().split('T')[0]
来获取日期的格式。
这两种方法都行,但是似乎不能同时使用。
我需要获取今天往前30天的日期,格式为:"2016-06-08"
我已经尝试了setDate(date.getDate()-30);
来获取-30天的日期。
我已经尝试了date.toISOString().split('T')[0]
来获取日期的格式。
这两种方法都行,但是似乎不能同时使用。
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"
date.setDate(date.getDate() - 30).toISOString().split('T')[0]
,但这样是行不通的。 - user247702您说这两行代码对您有用,而您的问题是如何将它们组合在一起。以下是如何实现:
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这样的库,而不是试图自己实现。
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)
// Format date object into a YYYY-MM-DD string
const formatDate = (date) => (date.toISOString().split('T')[0]);
const currentDate = new Date();
// Values in milliseconds
const currentDateInMs = currentDate.valueOf();
const ThirtyDaysInMs = 1000 * 60 * 60 * 24 * 30;
const calculatedDate = new Date(currentDateInMs - ThirtyDaysInMs);
console.log(formatDate(currentDate));
console.log(formatDate(calculatedDate));
你可以简单地用时间戳进行计算
var date = new Date(); // Current date
console.log(date.toDateString())
var pre_date = new Date(date.getTime() - 30*24*60*60*1000);
// You will get the Date object 30 days earlier to current date.
console.log(pre_date.toDateString())
这里的30*24*60*60*1000
指的是毫秒级别的时间差。
以 "YYYY-MM-DD" 格式表示的,今天日期减去30天:
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", ...]
}