Java 8 - TemporalAdjusters Beispiele
In Java 8 können Sie die vordefiniertenjava.time.temporal.TemporalAdjusters
verwenden, um ein Datum oderTemporal anzupassen
1. TemporalAdjusters
Beispiel zum Verschieben eines Datums nach firstDayOfMonth, firstDayOfNextMonth, nächsten Montag usw.
TestDate.java
package com.example.time; import java.time.DayOfWeek; import java.time.LocalDate; import java.time.temporal.TemporalAdjusters; public class TestDate { public static void main(String[] args) { LocalDate localDate = LocalDate.now(); System.out.println("current date : " + localDate); LocalDate with = localDate.with(TemporalAdjusters.firstDayOfMonth()); System.out.println("firstDayOfMonth : " + with); LocalDate with1 = localDate.with(TemporalAdjusters.lastDayOfMonth()); System.out.println("lastDayOfMonth : " + with1); LocalDate with2 = localDate.with(TemporalAdjusters.next(DayOfWeek.MONDAY)); System.out.println("next monday : " + with2); LocalDate with3 = localDate.with(TemporalAdjusters.firstDayOfNextMonth()); System.out.println("firstDayOfNextMonth : " + with3); } }
Ausgabe
current date : 2016-11-15 firstDayOfMonth : 2016-11-01 lastDayOfMonth : 2016-11-30 next monday : 2016-11-21 firstDayOfNextMonth : 2016-12-01
Note
Bitte überprüfen Sie dieseofficial
TemporalAdjusters JavaDoc für die gesamte Liste der vordefinierten TemporalAdjusters.
2. Benutzerdefinierter TemporalAdjuster
Beispiel für die Implementierung vonTemporalAdjuster
, um ein Datum auf das nächste Weihnachten zu verschieben.
NextChristmas.java
package com.example.time; import java.time.temporal.ChronoField; import java.time.temporal.Temporal; import java.time.temporal.TemporalAdjuster; public class NextChristmas implements TemporalAdjuster { @Override public Temporal adjustInto(Temporal temporal) { return temporal.with(ChronoField.MONTH_OF_YEAR, 12).with(ChronoField.DAY_OF_MONTH, 25); } }
TestDate.java
package com.example.time; import java.time.LocalDate; public class TestDate { public static void main(String[] args) { LocalDate localDate = LocalDate.now(); System.out.println("current date : " + localDate); localDate = localDate.with(new NextChristmas()); System.out.println("Next Christmas : " + localDate); } }
Ausgabe
current date : 2016-11-15 Next Christmas : 2016-12-25
Alternativ können Sie den folgenden Lambda-Ausdruck verwenden:
localDate = localDate.with( temporal -> temporal.with(ChronoField.MONTH_OF_YEAR, 12).with(ChronoField.DAY_OF_MONTH, 25) );