Java 8 - TemporalAdjusters Beispiele

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