在JavaScript开发中,经常需要根据当前日期往前推算几天,例如获取七天前、三十天前或者任意天数之前的日期。利用原生的Date对象,我们可以非常简单地完成这类日期计算,不需要引入第三方库。

使用时间戳计算之前日期
最直观的方式是拿到当前时间的时间戳,减去目标天数对应的毫秒数,再生成新的Date实例。
// 获取当前日期之前 n 天的日期
function getPreviousDate(days) {
var now = new Date();
var time = now.getTime();
var oneDay = 24 * 60 * 60 * 1000;
var target = new Date(time - days * oneDay);
return target;
}
var result = getPreviousDate(7);
console.log(result.toLocaleDateString());
使用setDate方法向前推算
Date对象提供了setDate和getDate方法,可以直接在当前日期的日份上做减法,浏览器会自动处理月份和年份的进位或借位。
// 使用setDate获取之前日期
function getPreviousDateBySetDate(days) {
var date = new Date();
date.setDate(date.getDate() - days);
return date;
}
var yesterday = getPreviousDateBySetDate(1);
console.log(yesterday);
格式化输出日期
拿到Date对象后,通常需要格式化成yyyy-mm-dd的形式,可以简单封装一个格式化函数。
function formatDate(date) {
var y = date.getFullYear();
var m = ('0' + (date.getMonth() + 1)).slice(-2);
var d = ('0' + date.getDate()).slice(-2);
return y + '-' + m + '-' + d;
}
var lastWeek = getPreviousDate(7);
console.log(formatDate(lastWeek));
注意事项
- 以上方法基于本地时区,若涉及服务端时间请统一时区标准。
- 使用getTime计算时,夏令时可能导致一天不是严格的86400000毫秒,setDate方式更安全。
- 不要把<input>标签和Date函数调用input()混淆,前者是HTML元素,后者是普通函数。
日常业务中推荐优先使用setDate方式,代码更短且不易出错。
简单对比
| 方式 | 优点 | 缺点 |
|---|---|---|
| getTime减法 | 逻辑直观 | 受夏令时影响 |
| setDate推算 | 自动借位 | 代码稍多封装 |
通过上述方法,开发者可以轻松在JavaScript中获取当前日期之前的任意日期,并根据业务需要做进一步处理。
JavaScriptDate日期计算getTimesetDate修改时间:2026-07-25 13:36:18