Datum

Einführung

Ein Datum zu verwalten ist keine triviale Aufgabe. Hierbei gibt es viele Nebenbedingungen zu beachten. Hier eine nicht abschließende Liste beispielhafter Anforderungen an eine Datumsverwaltung:

  • Eine Woche hat nicht immer 7 Tage (z.B. die erste Woche im Jahr).

  • Ein Jahr hat nicht immer 365 Tage (z.B. in Schaltjahren und bei Kalenderanpassungen).

  • Die Angabe 01/02/03 kann in Deutschland 2003-02-01, in USA 2003-01-02 und in asiatischen Staaten 2001-02-03 bedeuten.

  • Die Uhrzeit kann bis 12 AM/PM oder bis 24 h zählen.

  • Zeitzonen müssen berücksichtigt werden. Die Bestimmung der Zeitzone eines Ortes ist nicht einfach.

  • Es gibt verschiedene Kalendersysteme (z.B. 1-Jan-2000 (Gregorian) = 23-Tevet-5760 (Hebrew) = 24-Ramadan-1420 (Islamic)).

Zur Verwaltung eines Datums gibt es in der Programmiersprache Java unterschiedliche Klassen in unterschiedlichen Bibliotheken:

java.util.Date

Im Folgenden wird die Klasse Date aus der Bibliothek java.util vorgestellt. Objekte der Klasse Date verwalten ein bestimmtes Datum oder eine bestimmte Zeit; die Zeitgenauigkeit beträgt eine Millisekunde. Die Klasse java.util.Date teilt sich die Aufgabe der Datumsverwaltung mit der Klasse SimpleDateFormat.

Bis JDK 1.0.2 diente die Klasse Date zur Darstellung und Manipulation von Datumswerten. Ab JDK 1.1 wurde Calendar zur Bearbeitung von Datumswerten eingeführt und fast alle Methoden von Date als deprecated (deutsch veraltet) markiert.

Date speichert ein Datum-/Zeitwert als 64-Bit-Long-Variable in ms (Millisekunden). Das Datum 20. Januar 2015 10:58 Uhr wird als 1421747914500 ms codiert.

Wird ein Objekt der Klasse Date mit dem Standardkonstruktor erzeugt, wird das aktuelle Datum im Date Objekt gesetzt:

Datum einDatum= new Date();

Die Klasse SimpleDateFormat formatierte Ein-/Ausgabe von Datums- und Zeitwerten.

java.text.SimpleDateFormat

Datumsformatierungen unter Java sind über verschiedene Wege möglich. Eine recht einfache Möglichkeit ist die Verwendung von der Formatierungsklasse SimpleDateFormat. Diese Klasse ermöglicht es Ausgaben passend zu formatieren und Eingaben korrekt zu parsen.

Die Klasse SimpleDateFormat ist Teil der Bibliothek java.text und muss vor der Verwendung importiert werden. Im Konstruktor der Klasse SimpleDateFormat kann ein Format definiert werden. Gemäß diesem Format kann ein String mit Hilfe der SimpleDateFormat Klasse durch die Methode parse eingelesen und ein Date-Objekt zurückgegeben werden.

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");// Erzeugt ein Format

Formatierungsmaske

parse

Mit Hilfe der Methode parse(String input) lässt sich ein Eingabe-String in ein Date-Objekt verwandeln bzw. parsen. Die Rückgabe der Methode parse ist ein Objekt der Klasse Date.

String inputString = "20.01.2015 12:18:00";// Speichert ein Datum mit Zeitangabe als String

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");// Definiert ein Eingabeformat

Date einDatum = simpleDateFormat.parse(inputString);// Deklaration eines Date-Objektes und Überführung eines Eingabestrings in ein Date-Objekt

System.out.println(einDatum);

Die Methode parse kann eine ParseException auslösen. Diese Exception muss abgefangen oder weitergereicht werden!

format

Die Methode format(Date einDate) ermöglicht eine Rückgabe als String im definierten Format

Date einDatum = new Date();// Deklaration und Initialisierung eines Date-Objektes. Es wird das aktuelle Datum erzeugt

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd.MM.yyyy");// Deklaration und Initialisierung eines Formats

System.out.println("Datum: " + simpleDateFormat.format(einDatum));// Ausgabe eines Date-Objektes als String über die format-Methode