Die Pakete java.time, java.util, java.sql und java.text enthalten Klassen zur Darstellung von Datum und Uhrzeit. Die folgenden Klassen sind wichtig für den Umgang mit Datumsangaben in Java.
Java 8 Datum/Uhrzeit-API
Java hat seit Java 8 eine neue Datums- und Uhrzeit-API eingeführt. Das Paket java.time enthält Java 8-Datums- und Uhrzeitklassen.
- java.time.LocalDate-Klasse
- java.time.LocalTime-Klasse
- java.time.LocalDateTime-Klasse
- java.time.MonthDay-Klasse
- java.time.OffsetTime-Klasse
- java.time.OffsetDateTime-Klasse
- java.time.Clock-Klasse
- java.time.ZonedDateTime-Klasse
- java.time.ZoneId-Klasse
- java.time.ZoneOffset-Klasse
- java.time.Year-Klasse
- java.time.YearMonth-Klasse
- java.time.Period-Klasse
- java.time.Duration-Klasse
- java.time.Instant-Klasse
- java.time.DayOfWeek-Aufzählung
- java.time.Month-Aufzählung
Klassische Datums-/Uhrzeit-API
Aber auch die klassische oder alte Java Date API ist nützlich. Sehen wir uns die Liste der klassischen Datums- und Uhrzeitklassen an.
- java.util.Date-Klasse
- java.sql.Date-Klasse
- java.util.Calendar-Klasse
- java.util.GregorianCalendar-Klasse
- java.util.TimeZone-Klasse
- java.sql.Time-Klasse
- java.sql.Timestamp-Klasse
Datum und Uhrzeit formatieren
Wir können Datum und Uhrzeit in Java formatieren, indem wir die folgenden Klassen verwenden:
Java-APIs für Datum und Uhrzeit
Java stellt die Datums- und Uhrzeitfunktion mithilfe der beiden Pakete java.time und java.util bereit. Das Paket java.time wird in Java 8 eingeführt, und die neu eingeführten Klassen versuchen, die Mängel der alten Klassen java.util.Date und java.util.Calendar zu überwinden.
Klassische Datum/Uhrzeit-API-Klassen
Die primären Klassen vor der Veröffentlichung von Java 8 waren:
Klasse vs. Objekt Java
Java.lang.System: Die Klasse stellt die Methode currentTimeMillis() bereit, die die aktuelle Zeit in Millisekunden zurückgibt. Es zeigt das aktuelle Datum und die aktuelle Uhrzeit in Millisekunden ab dem 1. Januar 1970.
java.util.Datum: Es wird verwendet, um einen bestimmten Zeitpunkt in der Einheit Millisekunde anzuzeigen.
java.util.Calendar: Es handelt sich um eine abstrakte Klasse, die Methoden zum Konvertieren zwischen Instanzen und zum Bearbeiten der Kalenderfelder auf unterschiedliche Weise bereitstellt.
java.text.SimpleDateFormat: Es handelt sich um eine Klasse, die zum Formatieren und Analysieren der Daten auf eine vordefinierte Weise oder ein benutzerdefiniertes Muster verwendet wird.
java.util.TimeZone: Es stellt einen Zeitzonenversatz dar und berechnet auch die Sommerzeit.
Nachteile bestehender Datums-/Uhrzeit-APIs
Neue Datum-Uhrzeit-API in Java 8
Die neue Datums-API hilft, die oben genannten Nachteile der Legacy-Klassen zu überwinden. Es umfasst die folgenden Klassen:
java.time.LocalDate: Es stellt ein Jahr-Monat-Tag im ISO-Kalender dar und eignet sich zur Darstellung eines Datums ohne Uhrzeit. Es kann verwendet werden, um nur Datumsinformationen wie ein Geburtsdatum oder ein Hochzeitsdatum darzustellen.
java.time.LocalTime: Es handelt sich nur um Zeit. Es ist nützlich, um menschliche Tageszeiten darzustellen, beispielsweise Kinozeiten oder die Öffnungs- und Schließzeiten der örtlichen Bibliothek.
java.time.LocalDateTime: Es verarbeitet sowohl Datum als auch Uhrzeit, ohne Zeitzone. Es ist eine Kombination aus LocalDate und LocalTime.
java.time.ZonedDateTime: Es kombiniert die LocalDateTime-Klasse mit den in der ZoneId-Klasse angegebenen Zoneninformationen. Es stellt einen vollständigen Datums- und Zeitstempel zusammen mit Zeitzoneninformationen dar.
java.time.OffsetTime: Es verarbeitet die Zeit mit einem entsprechenden Zeitzonenversatz von Greenwich/UTC, ohne Zeitzonen-ID.
java.time.OffsetDateTime: Es verarbeitet ein Datum und eine Uhrzeit mit einem entsprechenden Zeitzonenversatz von Greenwich/UTC, ohne Zeitzonen-ID.
java.time.Clock: Es bietet Zugriff auf den aktuellen Zeitpunkt, das aktuelle Datum und die aktuelle Uhrzeit in einer beliebigen Zeitzone. Obwohl die Verwendung der Clock-Klasse optional ist, können wir mit dieser Funktion Ihren Code für andere Zeitzonen testen oder eine feste Uhr verwenden, bei der sich die Zeit nicht ändert.
java.time.Instant : Es stellt den Beginn einer Nanosekunde auf der Zeitachse dar (seit EPOCH) und ist nützlich für die Generierung eines Zeitstempels zur Darstellung der Maschinenzeit. Ein Zeitpunkt, der vor der Epoche auftritt, hat einen negativen Wert, und ein Zeitpunkt, der nach der Epoche auftritt, hat einen positiven Wert.
java.time.Duration: Die Differenz zwischen zwei Zeitpunkten wird in Sekunden oder Nanosekunden gemessen und verwendet keine datumsbasierten Konstrukte wie Jahre, Monate und Tage, obwohl die Klasse Methoden bereitstellt, die in Tage, Stunden und Minuten konvertieren.
java.time.Period : Es wird verwendet, um die Differenz zwischen Datumsangaben in datumsbasierten Werten (Jahre, Monate, Tage) zu definieren.
java.time.ZoneId: Es gibt eine Zeitzonenkennung an und stellt Regeln für die Konvertierung zwischen einem Instant und einem LocalDateTime bereit.
java.time.ZoneOffset : Es beschreibt einen Zeitzonenversatz zur Greenwich/UTC-Zeit.
java.time.format.DateTimeFormatter : Es werden verschiedene vordefinierte Formatierer bereitgestellt, oder wir können unsere eigenen definieren. Es verfügt über die Methoden parse() oder format() zum Parsen und Formatieren der Datums- und Uhrzeitwerte.