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

时间:2016-02-12 14:53:29

标签: java java-8 jodatime java-time

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

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

1 个答案:

答案 0 :(得分:14)

无需手动进行任何计算。

您可以使用方法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)