API Date Time de Java 8
Java 8 renforce davantage la gestion des dates et des heures en publiant la nouvelle API Date-Time (JSR 310).
Dans l'ancienne version de Java, l'API date-heure présentait de nombreux problèmes, notamment :
Non thread-safe− java.util.Date n'est pas thread-safe, et toutes les classes de date sont mutables. C'est l'un des plus gros problèmes des classes de date de Java.
Mauvaise conception− Les définitions des classes date/heure de Java ne sont pas cohérentes. Les classes de date existent à la fois dans les packages java.util et java.sql. De plus, les classes de formatage et d'analyse syntaxique sont définies dans le package java.text. java.util.Date contient à la fois la date et l'heure, tandis que java.sql.Date ne contient que la date. Le placer dans le package java.sql n'est pas raisonnable. En outre, ces deux classes portent le même nom, ce qui constitue en soi une très mauvaise conception.
Gestion problématique des fuseaux horaires− Les classes de date ne fournissent pas d'internationalisation et ne prennent pas en charge les fuseaux horaires. Par conséquent, Java a introduit les classes java.util.Calendar et java.util.TimeZone, mais elles présentent également tous les problèmes ci-dessus.
Java 8, dans le packagejava.time, fournit de nombreuses nouvelles API. Les deux suivantes sont parmi les API les plus importantes :
Local (local)− Simplifie la gestion date-heure, sans le problème des fuseaux horaires.
Zoned (fuseau horaire)− Gère la date-heure avec le fuseau horaire spécifié.
Le nouveau package java.time couvre toutes les opérations de gestion des dates, des heures, des date/heure, des fuseaux horaires, des instants, des processus (durant) et de l'horloge.
API Date-Heure locale
Les classes LocalDate/LocalTime et LocalDateTime peuvent être utilisées dans les cas où la gestion des fuseaux horaires n'est pas nécessaire. Le code est le suivant :
Fichier Java8Tester.java
En exécutant le script ci-dessus, la sortie est :
$ 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
API Date-Heure zonée
Si nous devons prendre en compte les fuseaux horaires, nous pouvons utiliser l'API de date-heure zonée :
Fichier Java8Tester.java
En exécutant le script ci-dessus, la sortie est :
$ javac Java8Tester.java $ java Java8Tester date1: 2015-12-03T10:15:30+08:00[Asia/Shanghai] ZoneId: Europe/Paris 当期时区: Asia/Shanghai
Autres extensions
Nouveautés de Java 8