零基础也能懂!JS 获取当前时间与一个月前时间(附完整代码 + 实例)

在日常工作中,我们经常会遇到需要 “筛选近一个月数据”“记录时间范围” 的场景 —— 比如统计近 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 个点别搞混

哪怕你不写代码,也需要理解这几个核心规则,避免用错:

  1. JS 的月份是 “0 开始” 的比如 1 月对应getMonth()返回 0,12 月返回 11—— 所以代码里要加+1,才能得到我们习惯的 “1-12 月”。如果忘了加 1,5 月就会显示成 4 月,这是最容易踩的坑!

  2. “补 0” 是为了格式统一比如 9 月如果不补 0,会显示成2024-9-20,而补 0 后是2024-09-20—— 这种统一格式在对接表格、系统时很重要,否则可能出现 “时间识别错误”。

  3. 自动处理 “跨年 / 跨月” 特殊情况比如 1 月(getMonth()返回 0)减 1 后,会自动变成去年 12 月;31 号减一个月时(比如 3 月 31 号→2 月 28/29 号),JS 会自动适配当月天数,不用我们手动算。

四、怎么测试?不用装软件,浏览器就能用

如果你想验证代码是否好用,按这 3 步操作(以 Chrome 浏览器为例):

  1. 打开任意网页(比如百度),按F12键打开 “开发者工具”;
  2. 点击顶部的「Console」(控制台),把上面的完整代码复制进去,按回车;
  3. 输入init_date()并回车,就能看到控制台打印出 “当前时间” 和 “一个月前时间”,比如:

    plaintext

    当前时间: 2024-05-20
    一个月前时间: 2024-04-20
    

    生成中

五、总结:非程序员怎么用?

  1. 直接复制代码:如果需要在系统、工具里配置时间范围,把init_date()函数复制过去,调用后就能拿到 “一个月前 - 当前” 的时间;
  2. 参考逻辑做手动筛选:如果不用代码,也能按 “月份减 1,补 0 对齐格式” 的逻辑,比如当前是 2024-05-20,一个月前就是 2024-04-20;
  3. 避坑提醒:1 月的前一个月是去年 12 月,31 号的前一个月看当月天数(比如 3 月 31 号→2 月 28 号)。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值