获取一周中给定日期的下一个 LocalDateTime

2022-09-03 18:34:01

我想在下一个(例如)星期一的日期/时间创建实例。LocalDateTime

Java Time API中是否有任何方法,或者我应该计算当前日期和目标日期之间有多少天,然后使用LocalDateTime.of()方法?


答案 1

无需手动进行任何计算。

您可以使用 LocalDateTime.with(adjuster) 方法使用调节器调整给定的日期。一周的第二天有一个内置的调节器:TemporalAdjusters.next(dayOfWeek)

返回星期几中的下一个调整器,该调整程序将日期调整为在调整日期之后指定星期的第一个匹配项。

public static void main(String[] args) {
    LocalDateTime dateTime = LocalDateTime.now();
    LocalDateTime nextMonday = dateTime.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
    System.out.println(nextMonday);
}

此代码将根据当前日期返回下一个星期一。

使用静态导入,这使得代码更易于阅读:

LocalDateTime nextMonday = dateTime.with(next(MONDAY));

请注意,如果当前日期已经在星期一,则此代码将返回下一个星期一(即下周的星期一)。如果你想在这种情况下保留当前日期,你可以使用nextOrSame(dayOfWeek)。


答案 2

推荐