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)
);