2016-02-12 33 views
6

次の月曜日などの日付/時刻にLocalDateTimeのインスタンスを作成したいとします。与えられた曜日の次のLocalDateTimeを取得する

Java Time 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)を使用できます。

関連する問題