Arbeiten mit Datum und Uhrzeit in Java: Vollständiger Leitfaden

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
```html

Einführung in die Arbeit mit Datum und Uhrzeit in Java

Die Arbeit mit Datum und Uhrzeit gehört zu den häufigsten Aufgaben in der Anwendungsentwicklung. Java bietet dafür leistungsstarke Werkzeuge. Lange Zeit war die Hauptklasse java.util.Date, die jedoch schwerwiegende Nachteile hatte: Veränderbarkeit (Mutabilität), Verwirrung bei den Monaten (Beginn bei 0) und fehlende Unterstützung für Zeitzonen. Mit der Veröffentlichung von Java 8 änderte sich die Situation grundlegend – es entstand die neue Date/Time API (Paket java.time), die threadsicher, unveränderlich (immutable) und intuitiv verständlich ist. In diesem Artikel werden wir beide Ansätze behandeln, den Schwerpunkt jedoch auf die moderne API legen.



1. Legacy API: Date und Calendar

Obwohl die Verwendung der alten Klassen in neuem Code nicht empfohlen wird, können Sie ihnen in Legacy-Projekten begegnen. Betrachten wir die wichtigsten Punkte.



Die Klasse Date

Die Klasse java.util.Date repräsentiert einen bestimmten Zeitpunkt mit einer Genauigkeit von Millisekunden. Sie hat zahlreiche veraltete Methoden.

import java.util.Date;

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

// Datum basierend auf Millisekunden (seit 1. Januar 1970) Date specificDate = new Date(1000000000000L); System.out.println("Datum nach Timestamp: " + specificDate);

// Datumsvergleich Date earlier = new Date(0); boolean isBefore = earlier.before(now); // true System.out.println("Ist früher? " + isBefore); }}


Die Klasse Calendar

java.util.Calendar ist ein flexibleres, aber umständliches Werkzeug. Es ermöglicht die Manipulation von Datumsfeldern.

import java.util.Calendar;

public class CalendarExample { public static void main(String[] args) { Calendar cal = Calendar.getInstance(); // Festlegen eines bestimmten Datums: 25. Dezember 2024 cal.set(2024, Calendar.DECEMBER, 25, 10, 30, 0); System.out.println("Datum: " + cal.getTime());

// Hinzufügen von 2 Wochen cal.add(Calendar.WEEK_OF_YEAR, 2); System.out.println("In 2 Wochen: " + cal.getTime());

// Abrufen einzelner Felder int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH); int month = cal.get(Calendar.MONTH) + 1; // +1, da Januar = 0 System.out.println("Tag: " + dayOfMonth + ", Monat: " + month); }}

Nachteile: Veränderbarkeit (die Methode add ändert das ursprüngliche Objekt), Komplexität der Formatierung, Verwirrung bei Zeitzonen.



2. Moderne Date/Time API (Java 8+)

Das Paket java.time enthält die wichtigsten Klassen: LocalDate, LocalTime, LocalDateTime, ZonedDateTime, Instant und andere. Sie sind alle unveränderlich und threadsicher.



LocalDate – Arbeiten mit dem Datum

Speichert ein Datum ohne Uhrzeit und Zeitzone (Jahr, Monat, Tag).

import java.time.LocalDate;import java.time.Month;

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

// Bestimmtes Datum LocalDate newYear = LocalDate.of(2025, Month.JANUARY, 1); System.out.println("Neujahr: " + newYear);

// Datumsarithmetik LocalDate nextWeek = today.plusWeeks(1); LocalDate lastMonth = today.minusMonths(1); System.out.println("Nächste Woche: " + nextWeek); System.out.println("Letzten Monat: " + lastMonth);

// Vergleich boolean isAfter = today.isAfter(newYear); // false System.out.println("Ist heute nach Neujahr? " + isAfter); }}


LocalTime – Arbeiten mit der Uhrzeit

Speichert die Uhrzeit (Stunde ```

Blogs

Buchempfehlungen