Java 8 - Exemples de TemporalAdjusters
Dans Java 8, vous pouvez utiliser lesjava.time.temporal.TemporalAdjusters
prédéfinis pour ajuster une date ou desTemporal
1. TemporalAdjusters
Exemple pour déplacer une date vers firstDayOfMonth, firstDayOfNextMonth, lundi prochain et etc.
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); } }
Sortie
current date : 2016-11-15 firstDayOfMonth : 2016-11-01 lastDayOfMonth : 2016-11-30 next monday : 2016-11-21 firstDayOfNextMonth : 2016-12-01
Note
Veuillez vérifier ceofficial
TemporalAdjusters JavaDoc pour la liste complète des TemporalAdjusters prédéfinis.
2. TemporalAdjuster personnalisé
Exemple d'implémentation deTemporalAdjuster
pour déplacer une date à Noël suivant.
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); } }
Sortie
current date : 2016-11-15 Next Christmas : 2016-12-25
Vous pouvez également utiliser l'expression lambda suivante:
localDate = localDate.with( temporal -> temporal.with(ChronoField.MONTH_OF_YEAR, 12).with(ChronoField.DAY_OF_MONTH, 25) );