Latest web development tutorials

Java Temps 8 Date API

Java 8 nouvelles fonctionnalités 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

Java 8 nouvelles fonctionnalités Java 8 nouvelles fonctionnalités