使用 JavaScript 获取 X 天前的日期
Get a Date of X days ago using JavaScript
要获得 X 天前的日期,请使用该setDate()
方法将日期设置为当月的当前日期减去天数,例如
daysAgo.setDate(date.getDate() - numOfDays)
。该setDate()
方法更改给定日期的月份中的第几天。
索引.js
function getDateXDaysAgo(numOfDays, date = new Date()) { const daysAgo = new Date(date.getTime()); daysAgo.setDate(date.getDate() - numOfDays); return daysAgo; } const date = new Date('2022-01-17'); // 👇️ Sat Jan 15 2022 09:28:20 console.log(getDateXDaysAgo(2, date)); // 👇️ Wed Jan 12 2022 09:28:20 console.log(getDateXDaysAgo(5, date));
我们创建了一个可重用的函数,它返回 X 天前的日期。
该函数采用的第一个参数是要从当月的当前日期减去的天数。
第二个参数是Date
要减去天数的对象。
如果要获取距当前日期 X 天前的日期,请在调用该函数时省略第二个参数。
索引.js
function getDateXDaysAgo(numOfDays, date = new Date()) { const daysAgo = new Date(date.getTime()); daysAgo.setDate(date.getDate() - numOfDays); return daysAgo; } const date = new Date('2022-01-17'); // 👇️ Wed Jan 12 2022 09:37:40 console.log(getDateXDaysAgo(5));
如果没有Date
提供对象作为第二个参数,该函数将使用当前日期。
在daysAgo
变量中,我们Date
使用提供的时间戳创建了一个新对象Date
。
我们这样做是因为该
setDate()
方法改变了它被调用的位置。 Date
我们使用
setDate()
方法更改 X 天前某个日期的月份日期。
请注意,Date
JavaScript 中的对象会自动处理必须回滚月份(和年份)的场景。
这是一个例子。
索引.js
function getDateXDaysAgo(numOfDays, date = new Date()) { const daysAgo = new Date(date.getTime()); daysAgo.setDate(date.getDate() - numOfDays); return daysAgo; } const date = new Date('2022-01-17'); // 👇️ Fri Dec 31 2021 console.log(getDateXDaysAgo(17, date));
我们得到了 1 月 17 日之前 17 天的日期,它回滚了创建Date
对象时的月份和年份。
如果您还想将日期的时间部分重置为午夜,可以使用该setHours()
方法。
索引.js
function getDateXDaysAgo(numOfDays, date = new Date()) { const daysAgo = new Date(date.getTime()); daysAgo.setDate(date.getDate() - numOfDays); daysAgo.setHours(0, 0, 0, 0); return daysAgo; } const date = new Date('2022-01-17'); // 👇️ Fri Dec 31 2021 00:00:00 console.log(getDateXDaysAgo(17, date));
我们传递给该setHours()
方法的 4 个参数是:hours
、minutes
和
。seconds
milliseconds
这具有将 Date 的时间部分重置为午夜的效果。