在日常工作中,我们经常会遇到需要 “筛选近一个月数据”“记录时间范围” 的场景 —— 比如统计近 30 天的工作报表、查询一个月内的订单记录。如果手动计算时间,不仅麻烦还容易出错,而用简单的 JS 代码就能自动搞定!这篇文章就带大家一步步看懂 “获取当前时间 + 一个月前时间” 的逻辑,哪怕你不是程序员,也能跟着用起来~
一、先搞懂:我们为什么需要这个功能?
在处理数据或做记录时,“时间范围” 是高频需求,比如:
- 运营同学:筛选近一个月的用户注册数据,做用户增长分析;
- 行政同学:统计一个月内的考勤记录,生成月度报表;
- 电商从业者:查询近 30 天的订单明细,核对库存。
手动算 “一个月前的日期” 很容易踩坑(比如 1 月的前一个月是去年 12 月,31 号的前一个月可能没有 31 号),而 JS 代码能自动处理这些特殊情况,帮我们精准获取时间。
二、核心代码拆解:每一步都讲明白
先看完整代码(可以直接复制用),后面会逐句解释逻辑:
js
// 主函数:获取当前时间和一个月前时间
window.init_date = function () {
// 1. 拿到当前的完整时间(年、月、日、时、分、秒)
var currentDate = new Date();
// 2. 把当前时间的“月份减1”,得到一个月前的时间
currentDate.setMonth(currentDate.getMonth() - 1);
// 3. 打印结果(控制台能看到时间格式)
console.log("当前时间:", getTime(new Date())); // 比如输出 2024-05-20
console.log("一个月前时间:", getTime(currentDate)); // 比如输出 2024-04-20
// 4. 把处理好的时间存起来(后续用在筛选、记录里)
docCreatimeBegin = getTime(currentDate); // 一个月前(开始时间)
docCreatimeEnd = getTime(new Date()); // 当前时间(结束时间)
}
// 辅助函数:把时间格式化成“年-月-日”(比如 2024-05-20,不是 2024-5-20)
window.getTime = function (time) {
// 提取年份(比如 2024)
var year = time.getFullYear();
// 提取月份:注意JS里月份从0开始(1月是0,12月是11),所以要加1
var month = time.getMonth() + 1;
// 提取日期(比如 20)
var day = time.getDate();
// 给“小于10的月/日”补0(比如 5月→05,8日→08)
var formattedDate = year + "-" + addLeadingZero(month) + "-" + addLeadingZero(day);
// 补0的小逻辑:数字<10就加“0”,否则直接返回
function addLeadingZero(number) {
if (number < 10) {
return "0" + number;
}
return number;
}
// 返回最终的“年-月-日”格式
return formattedDate;
}
三、关键逻辑:这 3 个点别搞混
哪怕你不写代码,也需要理解这几个核心规则,避免用错:
-
JS 的月份是 “0 开始” 的比如 1 月对应
getMonth()返回 0,12 月返回 11—— 所以代码里要加+1,才能得到我们习惯的 “1-12 月”。如果忘了加 1,5 月就会显示成 4 月,这是最容易踩的坑! -
“补 0” 是为了格式统一比如 9 月如果不补 0,会显示成
2024-9-20,而补 0 后是2024-09-20—— 这种统一格式在对接表格、系统时很重要,否则可能出现 “时间识别错误”。 -
自动处理 “跨年 / 跨月” 特殊情况比如 1 月(
getMonth()返回 0)减 1 后,会自动变成去年 12 月;31 号减一个月时(比如 3 月 31 号→2 月 28/29 号),JS 会自动适配当月天数,不用我们手动算。
四、怎么测试?不用装软件,浏览器就能用
如果你想验证代码是否好用,按这 3 步操作(以 Chrome 浏览器为例):
- 打开任意网页(比如百度),按
F12键打开 “开发者工具”; - 点击顶部的「Console」(控制台),把上面的完整代码复制进去,按回车;
- 输入
init_date()并回车,就能看到控制台打印出 “当前时间” 和 “一个月前时间”,比如:plaintext
当前时间: 2024-05-20 一个月前时间: 2024-04-20生成中
五、总结:非程序员怎么用?
- 直接复制代码:如果需要在系统、工具里配置时间范围,把
init_date()函数复制过去,调用后就能拿到 “一个月前 - 当前” 的时间; - 参考逻辑做手动筛选:如果不用代码,也能按 “月份减 1,补 0 对齐格式” 的逻辑,比如当前是 2024-05-20,一个月前就是 2024-04-20;
- 避坑提醒:1 月的前一个月是去年 12 月,31 号的前一个月看当月天数(比如 3 月 31 号→2 月 28 号)。

被折叠的 条评论
为什么被折叠?



