Tracks
/
Java
Java
/
Lehrplan
/
Datum und Uhrzeit
Da

Datum und Uhrzeit in Java

6 Übungen

Über Datum und Uhrzeit

Das in Java 8 eingeführte Paket java.time enthält mehrere Klassen für die Arbeit mit Datum und Uhrzeit.

LocalDate

Die Klasse java.time.LocalDate stellt ein Datum ohne Zeitzone im ISO-8601-Kalendersystem dar, zum Beispiel 2007-12-03:

LocalDate date = LocalDate.of(2007, 12, 3);

Daten lassen sich mit anderen Daten vergleichen:

LocalDate date1 = LocalDate.of(2007, 12, 3);
LocalDate date2 = LocalDate.of(2007, 12, 4);

date1.isBefore(date2);
// => true

date1.isAfter(date2);
// => false

Eine LocalDate-Instanz hat Getter, mit denen du ihre Bestandteile abrufen kannst:

LocalDate date = LocalDate.of(2007, 12, 3);

date.getYear();
// => 2007

date.getMonthValue();
// => 12

date.getDayOfMonth();
// => 3

Eine LocalDate-Instanz hat Methoden, mit denen du Zeiteinheiten hinzufügen kannst.

Note

Diese Methoden geben eine neue LocalDate-Instanz zurück und ändern die vorhandene Instanz nicht, da die Klasse LocalDate unveränderlich ist.

LocalDate date = LocalDate.of(2007, 12, 3);

date.plusDays(3);
// => 2007-12-06

date.plusMonths(1);
// => 2008-01-03

date.plusYears(1);
// => 2008-12-03

LocalDateTime

Die Klasse java.time.LocalDateTime stellt einen Datums- und Zeitwert ohne Zeitzone im ISO-8601-Kalendersystem dar, zum Beispiel 2007-12-03T10:15:30:

LocalDateTime datetime = LocalDateTime.of(2007, 12, 3, 10, 15, 30);

datetime.getYear();
// => 2007

datetime.getMonthValue();
// => 12

datetime.getDayOfMonth();
// => 3

datetime.getHours();
// => 10

datetime.getMinutes();
// => 15

datetime.getSeconds();
// => 30

Wie die Klasse LocalDate bietet eine LocalDateTime-Instanz dieselben Methoden, um sie mit anderen LocalDateTime-Instanzen zu vergleichen und Zeiteinheiten hinzuzufügen.

Du kannst eine LocalDate-Instanz außerdem in eine LocalDateTime umwandeln:

LocalDate date = LocalDate.of(2007, 12, 3);
LocalDateTime datetime = date.atTime(10, 15, 30);
datetime.toString();
// => "2007-12-03T10:15:30"

Datum und Uhrzeit formatieren

Sowohl LocalDate als auch LocalDateTime verwenden die Standardnotation nach ISO-8601, wenn sie aus einem String erzeugt oder in einen String umgewandelt werden.

LocalDateTime datetime = LocalDateTime.of(2007, 12, 3, 10, 15, 30);
LocalDateTime parsed = LocalDateTime.parse("2007-12-03T10:15:30");

datetime.isEqual(parsed);
// => true

Es ist nicht möglich, ein LocalDate oder LocalDateTime auf diese Weise mit einem anderen Format aus einem String zu parsen. Um Datumsangaben stattdessen mit einem eigenen Format zu formatieren, verwendest du den java.time.format.DateTimeFormatter:

DateTimeFormatter parser = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate date = LocalDate.parse("03/12/2007", formatter);

DateTimeFormatter printer = DateTimeFormatter.ofPattern("MMMM d, yyyy");
printer.format(date);
// => "December 3, 2007"

Beim Erstellen des eigenen Formats kannst du außerdem ein Locale angeben, um für verschiedene Regionen zu formatieren und zu parsen:

DateTimeFormatter.ofPattern("MMMM d, yyyy", Locale.FRENCH).format(date);
// => décembre 3, 2007

DateTimeFormatter.ofPattern("MMMM d, yyyy", Locale.of("pt")).format(date);
// => dezembro 3, 2007
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab

Lerne Datum und Uhrzeit