2016-02-12 16 views
6

Ich möchte Instanz von LocalDateTime zum Datum/Uhrzeit des nächsten (zum Beispiel) Montag erstellen.Holen Sie sich die nächste LocalDateTime für einen bestimmten Wochentag

Gibt es eine Methode in Java Time API, oder sollte ich Berechnungen durchführen, wie viele Tage zwischen aktuellen und Zieldaten liegen und dann LocalDateTime.of() -Methode verwenden?

+0

Ich würde empfehlen: https://docs.oracle.com/javase/8/docs/api/java/util/Calendar.html – Fincio

+3

@Fincio Sicher nicht. – Tunaki

+0

LocalDateTime \t plusWeeks (lange Wochen)? – Fincio

Antwort

11

Es müssen keine Berechnungen von Hand durchgeführt werden.

Sie können ein bestimmtes Datum mit einem Adjuster mit der Methode LocalDateTime.with(adjuster) einstellen. Es ist eine für den nächsten Tag der Woche Teller-in gebaut: TemporalAdjusters.next(dayOfWeek):

Gibt die nächsten Tag-of-Woche Teller, die das Datum auf das erste Vorkommen der angegebenen Tag-of-Woche paßt nach Das Datum wird angepasst.

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

Dieser Code wird beim nächsten Montag zurückkehren dem aktuellen Datum basiert.

statische Importe verwenden, dies macht den Code leichter zu lesen:

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

Sie beachten, dass, wenn das aktuelle Datum bereits an einem Montag ist, wird dieser Code am nächsten Montag zurückkehren (dh des Montag von der nächsten Woche). Wenn Sie in diesem Fall das aktuelle Datum beibehalten möchten, können Sie nextOrSame(dayOfWeek) verwenden.

Verwandte Themen