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

@[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
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)