Arbeiten mit Daten in Java: Bibliotheken und Werkzeuge
Die Arbeit mit Daten und Zeiten ist eine der Kernaufgaben in jeder Anwendung. In Java wurden die Standardklassen java.util.Date und java.util.Calendar lange Zeit wegen ihrer Unhandlichkeit, Veränderlichkeit und schlechten Unterstützung von Zeitzonen kritisiert. Mit der Veröffentlichung von Java 8 hat sich die Situation jedoch grundlegend geändert. In diesem Artikel betrachten wir die wichtigsten Bibliotheken und Werkzeuge für die Arbeit mit Daten in Java, die Ihnen helfen, sauberen und zuverlässigen Code zu schreiben.
1. Standardbibliothek java.time (Java 8+)
Seit Java 8 steht Entwicklern das leistungsstarke Paket java.time zur Verfügung, das auf dem ISO-8601-Standard basiert. Dies ist die empfohlene Methode für die Arbeit mit Daten und Zeiten. Die wichtigsten 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 Berücksichtigung der Zeitzone.Instant— Zeitpunkt in UTC (für maschinelle Zeit).DurationundPeriod— für die Arbeit mit Intervallen.
Beispiel: Erstellung und Formatierung eines Datums
import java.time.LocalDate;import java.time.format.DateTimeFormatter;
public class DateExample { public static void main(String[] args) { // Aktuelles Datum LocalDate today = LocalDate.now(); System.out.println("Heute: " + today);
// Erstellung eines bestimmten Datums LocalDate birthDate = LocalDate.of(1990, 5, 15); System.out.println("Geburtsdatum: " + birthDate);
// Formatierung DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy"); String formatted = birthDate.format(formatter); System.out.println("Formatiertes Datum: " + formatted);
// Parsen eines Strings String dateStr = "2023-12-31"; LocalDate parsedDate = LocalDate.parse(dateStr); System.out.println("Geparst: " + parsedDate); }}Beispiel: Berechnung der Differenz zwischen Daten
import java.time.LocalDate;import java.time.Period;import java.time.temporal.ChronoUnit;
public class DateDifference { public static void main(String[] args) { LocalDate start = LocalDate.of(2020, 1, 1); LocalDate end = LocalDate.of(2024, 3, 15);
Period period = Period.between(start, end); System.out.println("Differenz: " + period.getYears() + " Jahre, " + period.getMonths() + " Monate, " + period.getDays() + " Tage");
long daysBetween = ChronoUnit.DAYS.between(start, end); System.out.println("Gesamte Tage: " + daysBetween); }}2. Joda-Time (für ältere Java-Versionen)
Vor dem Erscheinen von java.time war die Bibliothek Joda-Time der De-facto-Standard. Sie bot praktische immutable-Klassen und Unterstützung für Zeitzonen. Wenn Sie mit Java 7 oder niedriger arbeiten, ist Joda-Time eine ausgezeichnete Wahl.
Einbindung (Maven):
<dependency> <groupId>joda-time</groupId> <artifactId>joda-time</artifactId> <version>2.12.7</version></dependency>Beispiel: Arbeiten mit Joda-Time
import org.joda.time.DateTime;import org.joda.time.Days;import org.joda.time.format.DateTimeFormat;import org.joda.time.format.DateTimeFormatter;
public class JodaExample { public static void main(String[] args) { // Aktuelles Datum und Uhrzeit DateTime now = new DateTime(); System.out.println("Jetzt: " + now);
// Erstellung eines Datums DateTime specificDate =