java 8 的 temporaladjusters 提供线程安全的日期调整方法:next(dayofweek.monday) 获取严格下周一(含7天后),lastdayofmonth() 获取月末;还支持 nextorsame、firstdayofnextmonth 等多种调整器,均通过 .with() 返回新实例。

Java 8 引入的 java.time API 提供了简洁、不可变、线程安全的日期时间处理方式。要获取“下周一”或“月末”,推荐使用 TemporalAdjusters 工具类——它封装了常见的时间调整逻辑,避免手动计算。
获取下周一(严格指下一个周一,不是本周一)
使用 TemporalAdjusters.next(DayOfWeek.MONDAY) 即可。注意:如果今天就是周一,它返回的是**下周的周一**(即 7 天后),符合“下周一”的日常语义。
示例代码:
LocalDate today = LocalDate.now();<br> LocalDate nextMonday = today.with(TemporalAdjusters.next(MONDAY));<br> System.out.println(nextMonday); // 如今天是 2024-06-10(周一),输出 2024-06-17
获取本月最后一天(月末)
直接用 TemporalAdjusters.lastDayOfMonth(),它会返回当前月的最后一天,无需关心月份天数或闰年。
示例代码:
LocalDate today = LocalDate.now();<br> LocalDate endOfMonth = today.with(TemporalAdjusters.lastDayOfMonth());<br> System.out.println(endOfMonth); // 如今天是 2024-06-10,输出 2024-06-30
补充:其他常用调整器
除了上述两个,TemporalAdjusters 还提供多个实用方法:
-
nextOrSame(DayOfWeek):获取本周或下周的指定星期几(如今天是周一,
nextOrSame(MONDAY)返回今天) - firstDayOfNextMonth():获取下月第一天(常用于计算账期起始)
- dayOfWeekInMonth(2, WEDNESDAY):获取本月第二个周三(适合处理“每月第二个周五发薪”等场景)
- lastInMonth(DayOfWeek):获取本月最后一个指定星期几(如“本月最后一个周五”)
注意事项
所有 TemporalAdjusters 方法都作用于 Temporal 类型(如 LocalDate、LocalDateTime),调用时用 .with() 而非 .plus();它们不改变原对象,返回新实例。
若需获取“下个月末”,可链式调用:today.with(firstDayOfNextMonth()).with(lastDayOfMonth())。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











