2016-02-12 52 views
6

的某一天我想在接下来的(例如)周一的日期/时间创建的LocalDateTime实例。获取下LocalDateTime为

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

+0

我会推荐:https://docs.oracle.com/javase/8/docs/api/java/util/Calendar.html – Fincio

+3

@Fincio当然不是。 – Tunaki

+0

LocalDateTime \t plusWeeks(长周)? – Fincio

回答

11

没有必要用手工做任何计算。

可以调整一个给定的日期与方法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)