Java Temps 8 Date API
Java 8 nouvelles fonctionnalités
Nashorn un moteur javascript.
Java 8 en émettant de nouvelles API Date-Time (JSR 310) pour renforcer encore la date et l'heure de la transformation.
Dans les anciennes versions de Java, il y a une date et API de temps des problèmes, y compris:
Non-thread-safe - java.util.Date pas thread-safe, toutes les dates de classe sont variables, qui est l' un des plus grands problèmes Java classe Date.
Mauvaise conception - Définir les classes Java de date / heure ne sont pas compatibles dans le java.util et package java.sql a une date de classes, en plus de mise en forme et définition de la classe d'analyse dans le package java.text.java.util.Date comprennent à la fois la date et l'heure, et java.sql.Date ne contient que la date, qui a été inclus dans le package java.sql et déraisonnable. En outre, ces deux classes ont le même nom, qui lui-même est une très mauvaise conception.
manutention Timezone ennuis - Date classe ne propose pas international, aucun soutien de fuseau horaire, Java et java.util.TimeZone introduit la classe java.util.Calendar, mais ils existent tous les mêmes problèmes que décrit ci - dessus.
Java 8 dans le paquetde java.time fournit beaucoup de nouvelles API.Le sont deux des API plus importantes suivantes:
Local (Local) - simplifie la manipulation de la date et l' heure, aucun fuseau horaire de problème.
Zonée (fuseau horaire) - Date de traitement et de temps en temps zone adoptées.
Nouveau paquet java.time couvre toute date de traitement, le temps, / heure, le fuseau horaire, l'heure (instants), le processus de la date (pendant) et l'horloge (horloge) opération.
Date Localisée et API de temps
LocalDate / LocalTime et la zone de classe LocalDateTime est pas nécessaire lorsque le traitement de l'affaire. Le code se présente comme suit:
import java.time.LocalDate; import java.time.LocalTime; import java.time.LocalDateTime; import java.time.Month; public class Java8Tester { public static void main(String args[]){ Java8Tester java8tester = new Java8Tester(); java8tester.testLocalDateTime(); } public void testLocalDateTime(){ // 获取当前的日期时间 LocalDateTime currentTime = LocalDateTime.now(); System.out.println("当前时间: " + currentTime); LocalDate date1 = currentTime.toLocalDate(); System.out.println("date1: " + date1); Month month = currentTime.getMonth(); int day = currentTime.getDayOfMonth(); int seconds = currentTime.getSecond(); System.out.println("月: " + month +", 日: " + day +", 秒: " + seconds); LocalDateTime date2 = currentTime.withDayOfMonth(10).withYear(2012); System.out.println("date2: " + date2); // 12 december 2014 LocalDate date3 = LocalDate.of(2014, Month.DECEMBER, 12); System.out.println("date3: " + date3); // 22 小时 15 分钟 LocalTime date4 = LocalTime.of(22, 15); System.out.println("date4: " + date4); // 解析字符串 LocalTime date5 = LocalTime.parse("20:15:30"); System.out.println("date5: " + date5); } }
Mise en œuvre du 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
fuseau horaire de l'API Datetime
Si nous devons prendre en compte le fuseau horaire, vous pouvez utiliser la date et l'heure du temps de l'API zone:
import java.time.ZonedDateTime; import java.time.ZoneId; public class Java8Tester { public static void main(String args[]){ Java8Tester java8tester = new Java8Tester(); java8tester.testZonedDateTime(); } public void testZonedDateTime(){ // 获取当前时间日期 ZonedDateTime date1 = ZonedDateTime.parse("2015-12-03T10:15:30+05:30[Asia/Shanghai]"); System.out.println("date1: " + date1); ZoneId id = ZoneId.of("Europe/Paris"); System.out.println("ZoneId: " + id); ZoneId currentZone = ZoneId.systemDefault(); System.out.println("当期时区: " + currentZone); } }
Mise en œuvre du 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