java工具:《获取上个月的结束时间》

举报
刘大猫 发表于 2026/03/12 19:22:25 2026/03/12
【摘要】 java工具:《获取上个月的结束时间》

image.png

@[toc]

一、介绍

这段代码定义了一个名为 getBeforeLastMonth 的静态方法,其核心功能是获取上个月最后一天的结束时刻,即上个月最后一天的 23:59:59 点。

方法逻辑解析:

  1. 获取当前时间:首先通过 Calendar.getInstance() 获取当前系统时间。
  2. 月份回退:通过 add(Calendar.MONTH, -1) 将日期调整到上个月。
  3. 定位月末:关键一步在于使用 calendar.getActualMaximum(Calendar.DAY_OF_MONTH) 动态获取上个月的实际最大天数(可能是 28、29、30 或 31),并将日历日字段设置为该值,从而准确定位到上个月的最后一天。
  4. 设置末时刻:接着将小时设置为 23、分钟设置为 59、秒钟设置为 59、毫秒设置为 999,精确锁定在上个月最后一天的最后一刻。
  5. 返回结果:最终返回一个 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
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。