
@[toc]
一、介绍
这段代码定义了一个名为 getBeforeLastMonth 的静态方法,其核心功能是获取上个月最后一天的结束时刻,即上个月最后一天的 23:59:59 点。
方法逻辑解析:
- 获取当前时间:首先通过 Calendar.getInstance() 获取当前系统时间。
- 月份回退:通过 add(Calendar.MONTH, -1) 将日期调整到上个月。
- 定位月末:关键一步在于使用 calendar.getActualMaximum(Calendar.DAY_OF_MONTH) 动态获取上个月的实际最大天数(可能是 28、29、30 或 31),并将日历日字段设置为该值,从而准确定位到上个月的最后一天。
- 设置末时刻:接着将小时设置为 23、分钟设置为 59、秒钟设置为 59、毫秒设置为 999,精确锁定在上个月最后一天的最后一刻。
- 返回结果:最终返回一个 Date 对象,代表上个月最后一天的 23:59:59。
应用场景:
这个方法与 getBeforeFirstMonth 方法形成完美配对,共同用于构建上个月的完整时间区间。在月度数据统计、财务报表生成、订阅周期结算等场景中,该方法返回的时间点可以作为查询条件的上限(小于等于该时间),配合上个月开始时间,即可精确覆盖从上个月1号零点到月末最后一刻的全部数据,确保统计范围既不遗漏也不越界。二、代码
/** * author:Yu Yang * 获取上个月的结束时间 */ public static Date getBeforeLastMonth(){ Calendar calendar = Calendar.getInstance();// 获取当前日期 calendar.add(Calendar.YEAR, 0); calendar.add(Calendar.MONTH, -1); calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));// 获取当前月最后一天 calendar.set(Calendar.HOUR_OF_DAY, 23); calendar.set(Calendar.MINUTE, 59); calendar.set(Calendar.SECOND, 59); calendar.set(Calendar.MILLISECOND, 999); return calendar.getTime(); }结果展示
System.out.println(getBeforeLastMonth()); //Tue May 31 23:59:59 CST 2022
重要信息





