Mit der Einführung von Java 8 wurde die Date/Time-API grundlegend überarbeitet und um leistungsfähige Klassen erweitert. Diese Klassen bieten eine verbesserte Behandlung von Datum und Uhrzeit im Vergleich zu den älteren Date- und Calendar-Klassen. In diesem Artikel werden wir uns eingehend mit verschiedenen Klassen der Java 8 Date/Time-API befassen, darunter Instant, Period, Duration, LocalDateTime, OffsetDateTime und ZonedDateTime.

Instant

Instant ist eine einfache Klasse, die einen bestimmten Punkt in der Zeit repräsentiert. Dieser Punkt wird in der Regel in Form von Sekunden seit dem Epoch-Zeitpunkt (1. Januar 1970 um 00:00:00 UTC) dargestellt. Instanzen von Instant sind unveränderlich (immutable).

Instant instant = Instant.now(); // aktuelle Zeit
System.out.println(instant);Code-Sprache: JavaScript (javascript)

Mit Instant können Sie auch spezifische Zeitpunkte erstellen, indem Sie Sekunden und Nanosekunden angeben.

Instant specificInstant = Instant.ofEpochSecond(1609459200, 0); // 01. Januar 2021 00:00:00 UTC
System.out.println(specificInstant);Code-Sprache: JavaScript (javascript)

Period

Die Klasse Period repräsentiert eine Zeitspanne zwischen zwei Datumswerten, gemessen in Jahren, Monaten und Tagen. Sie ist besonders nützlich, wenn Sie mit zeitlichen Abständen auf Kalenderebene arbeiten möchten.

LocalDate startDate = LocalDate.of(2022, 1, 1);
LocalDate endDate = LocalDate.of(2024, 1, 1);

Period period = Period.between(startDate, endDate);
System.out.println("Years: " + period.getYears() + ", Months: " + period.getMonths() + ", Days: " + period.getDays());Code-Sprache: JavaScript (javascript)

Duration

Im Gegensatz zu Period misst Duration zeitliche Abstände auf der Ebene von Stunden, Minuten, Sekunden und Nanosekunden. Es ist ideal für die Arbeit mit präzisen Zeitintervallen.

LocalTime startTime = LocalTime.of(12, 0, 0);
LocalTime endTime = LocalTime.of(15, 30, 0);

Duration duration = Duration.between(startTime, endTime);
System.out.println("Hours: " + duration.toHours() + ", Minutes: " + duration.toMinutes());Code-Sprache: JavaScript (javascript)

LocalDateTime

LocalDateTime repräsentiert ein Datum und eine Uhrzeit ohne Berücksichtigung von Zeitzonen. Es ist besonders geeignet für Anwendungen, bei denen die Zeitinformation lokal behandelt wird.

LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(localDateTime);

Sie können auch spezifische Zeitpunkte erstellen, indem Sie das Datum und die Uhrzeit angeben.

LocalDateTime specificDateTime = LocalDateTime.of(2023, 5, 15, 14, 30);
System.out.println(specificDateTime);

OffsetDateTime

OffsetDateTime ist eine Erweiterung von LocalDateTime, die auch eine Verschiebung (Offset) von der UTC-Zeit enthält. Dies ist nützlich, um Zeitpunkte in einem bestimmten Zeitzonenkontext zu repräsentieren.

OffsetDateTime offsetDateTime = OffsetDateTime.now();
System.out.println(offsetDateTime);

Sie können auch eine spezifische Verschiebung angeben.

OffsetDateTime specificOffsetDateTime = OffsetDateTime.of(2022, 8, 10, 18, 0, 0, 0, ZoneOffset.ofHours(2));
System.out.println(specificOffsetDateTime);

ZonedDateTime

ZonedDateTime erweitert LocalDateTime um die Informationen zur Zeitzonen-ID. Dies ist besonders wichtig, wenn Sie mit internationalen Zeitzonen arbeiten.

ZonedDateTime zonedDateTime = ZonedDateTime.now();
System.out.println(zonedDateTime);

Sie können auch eine bestimmte Zeitzonen-ID angeben.

ZonedDateTime specificZonedDateTime = ZonedDateTime.of(2022, 12, 25, 8, 0, 0, 0, ZoneId.of("Europe/Berlin"));
System.out.println(specificZonedDateTime);Code-Sprache: JavaScript (javascript)

Fazit

Die Java 8 Date/Time-API bietet mächtige Klassen zur effektiven Handhabung von Datum und Uhrzeit. Durch die Verwendung von Klassen wie Instant, Period, Duration, LocalDateTime, OffsetDateTime und ZonedDateTime können Entwickler zeitbezogene Operationen präzise und benutzerfreundlich implementieren. Es ist wichtig, die geeignete Klasse basierend auf den Anforderungen der Anwendung zu wählen, sei es die Arbeit mit Zeitpunkten, Zeitspannen oder spezifischen Zeitpunkten in unterschiedlichen Zeitzonen. Java 8 hat die Arbeit mit Datum und Uhrzeit in der Programmierung erheblich verbessert und bietet eine solide Grundlage für die Verwaltung von Zeit in Anwendungen.