Arbeiten mit Daten in Java: Überblick über die Bibliotheken java.time, Joda-Time und Apache Commons

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Arbeiten mit Daten in Java: Überblick über moderne Bibliotheken und Werkzeuge



Die Arbeit mit Datum und Uhrzeit gehört zu den häufigsten Aufgaben in der Java-Entwicklung. Lange Zeit waren die Standardklassen java.util.Date und java.util.Calendar umständlich, mutable (veränderbar) und fehleranfällig. Glücklicherweise hat sich die Situation geändert. In diesem Überblick betrachten wir drei Hauptansätze: das integrierte Paket java.time, die Bibliothek Joda-Time und die Hilfsprogramme von Apache Commons Lang.



1. java.time (Java 8+) – moderner Standard



Seit Java 8 ist das Paket java.time Teil der Standardbibliothek, das auf den Ideen von Joda-Time basiert. Dies ist die primäre und empfohlene Methode für die Arbeit mit Daten in neuen Projekten.



Wichtige Klassen:

  • LocalDate – Datum ohne Uhrzeit (Jahr, Monat, Tag).
  • LocalTime – Uhrzeit ohne Datum (Stunden, Minuten, Sekunden, Nanosekunden).
  • LocalDateTime – Kombination von Datum und Uhrzeit.
  • ZonedDateTime – Datum und Uhrzeit mit Zeitzonenberücksichtigung.
  • Instant – Zeitpunkt in UTC (maschinenlesbar).
  • Duration und Period – für die Arbeit mit Zeitintervallen.


Anwendungsbeispiele:

import java.time.*;import java.time.format.DateTimeFormatter;import java.time.temporal.ChronoUnit;

public class JavaTimeExample { public static void main(String[] args) { // Aktuelles Datum und Uhrzeit LocalDate today = LocalDate.now(); LocalTime now = LocalTime.now(); System.out.println("Heute: " + today); System.out.println("Jetzt: " + now);

// Erstellen eines bestimmten Datums LocalDate birthDate = LocalDate.of(1990, Month.MAY, 15); System.out.println("Geburtsdatum: " + birthDate);

// Arbeit mit Zeitzonen ZonedDateTime berlinTime = ZonedDateTime.now(ZoneId.of("Europe/Berlin")); ZonedDateTime tokyoTime = ZonedDateTime.now(ZoneId.of("Asia/Tokyo")); System.out.println("In Berlin: " + berlinTime); System.out.println("In Tokio: " + tokyoTime);

// Differenz zwischen Daten long daysBetween = ChronoUnit.DAYS.between(birthDate, today); System.out.println("Tage seit dem Geburtstag: " + daysBetween);

// Formatierung DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm"); String formatted = LocalDateTime.now().format(formatter); System.out.println("Formatiert: " + formatted);

// Parsen eines Strings LocalDate parsedDate = LocalDate.parse("2023-12-31"); System.out.println("Geparst: " + parsedDate); }}


2. Joda-Time – eine bewährte Alternative



Vor der Veröffentlichung von Java 8 war Joda-Time der De-facto-Standard für die Arbeit mit Daten. Heute ist seine Verwendung nur in Legacy-Projekten oder bei der Notwendigkeit der Unterstützung älterer Java-Versionen (unter 8) gerechtfertigt.



Hauptmerkmale:

  • Unveränderliche (immutable) Objekte – Thread-Sicherheit.
  • Unterstützung vieler Kalendersysteme (islamisch, buddhistisch usw.).
  • Einfache und intuitive API.


Codebeispiel mit Joda-Time:

import org.joda.time.*;import org.joda.time.format.DateTimeFormat;import org.joda.time.format.DateTimeFormatter;

public class JodaTimeExample { public static void main(String[] args) { // Aktuelles Datum und Uhrzeit DateTime now = DateTime.now(); System.out.println("Jetzt: " + now);

// Erstellen eines Datums DateTime specificDate = new DateTime(2020, 6, 15, 10, 30, 0); System.out.println("Bestimmtes Datum: " + specificDate);

// Tage hinzufügen DateTime nextW

Empfehlungen