Java 8 Datums-/Zeit-API
Java 8 verstärkt die Handhabung von Datum und Uhrzeit weiter, indem es die neue Date-Time-API (JSR 310) veröffentlicht.
In der alten Version von Java hatte die Date-Time-API viele Probleme, darunter:
Nicht thread-sicher− java.util.Date ist nicht thread-sicher, und alle Datumsklassen sind veränderbar. Dies ist eines der größten Probleme mit den Java-Datumsklassen.
Schlechtes Design− Die Definitionen der Java-Datums-/Zeitklassen sind nicht konsistent. Datumsklassen existieren sowohl im Paket java.util als auch im Paket java.sql. Außerdem sind Klassen zum Formatieren und Parsen im Paket java.text definiert. java.util.Date enthält sowohl Datum als auch Uhrzeit, während java.sql.Date nur das Datum enthält. Es im Paket java.sql unterzubringen, ist unvernünftig. Darüber hinaus haben diese beiden Klassen denselben Namen, was an sich ein sehr schlechtes Design ist.
Problematische Handhabung von Zeitzonen− Die Datumsklassen bieten keine Internationalisierung und keine Zeitzonenunterstützung. Daher führte Java die Klassen java.util.Calendar und java.util.TimeZone ein, aber auch sie haben alle oben genannten Probleme.
Java 8 bietet imjava.timePaket viele neue APIs. Die folgenden sind zwei der wichtigeren APIs:
Lokal (lokal)− Vereinfacht die Handhabung von Datum und Uhrzeit, ohne das Problem der Zeitzonen.
Zoniert (Zeitzone)− Behandelt Datum und Uhrzeit mit der angegebenen Zeitzone.
Das neue java.time-Paket deckt alle Operationen für die Handhabung von Datum, Uhrzeit, Datum/Uhrzeit, Zeitzonen, Zeitpunkten, Prozess (during) und Uhr ab.
Lokale Date-Time-API
Die Klassen LocalDate/LocalTime und LocalDateTime können in Fällen verwendet werden, in denen keine Zeitzonenbehandlung erforderlich ist. Der Code lautet wie folgt:
Java8Tester.java-Datei
Beim Ausführen des obigen Skripts lautet die Ausgabe:
$ javac Java8Tester.java $ java Java8Tester 当前时间: 2016-04-15T16:55:48.668 date1: 2016-04-15 月: APRIL, 日: 15, 秒: 48 date2: 2012-04-10T16:55:48.668 date3: 2014-12-12 date4: 22:15 date5: 20:15:30
Zoned Date-Time-API
Wenn wir Zeitzonen berücksichtigen müssen, können wir die Zoned Date-Time-API verwenden:
Java8Tester.java-Datei
Beim Ausführen des obigen Skripts lautet die Ausgabe:
$ javac Java8Tester.java $ java Java8Tester date1: 2015-12-03T10:15:30+08:00[Asia/Shanghai] ZoneId: Europe/Paris 当期时区: Asia/Shanghai
Weitere Erweiterungen
Neue Funktionen in Java 8