Maison > Java > javaDidacticiel > Introduction détaillée aux nouvelles classes Date et Time dans Java 8

Introduction détaillée aux nouvelles classes Date et Time dans Java 8

黄舟
Libérer: 2017-03-31 11:12:26
original
1682 Les gens l'ont consulté

Cet article concerne principalement le combat réel des nouvelles Date et Time API en java8. Les nouvelles classes Date et Heure sont le résultat de demandes très attendues de la communauté des développeurs Java. La classe Date qui existait avant Java8 a toujours été critiquée et de nombreuses personnes choisissent d'utiliser la bibliothèque de dates tierce joda-time. L'API de date et d'heure en Java8 a été développée par l'auteur de jodatime et implémente tout le contenu de JSR310. Ces nouvelles API se trouvent sous le package java.time.

Étant donné que les bibliothèques tierces joda-time et date4j sont déjà suffisamment puissantes, pourquoi Java8 doit-il les réimplémenter ? Cela s'explique en partie par le fait que ces bibliothèques tierces ont des problèmes de compatibilité, comme la norme ? Date JSF Le convertisseur est incompatible avec l'API joda-time. Vous devez écrire votre propre convertisseur à chaque fois que vous l'utilisez. Par conséquent, une API standardisée est nécessaire. Avec JSR310, toutes ses dispositions sont implémentées dans Java8.

Les principes de conception derrière les nouvelles classes Date et Time :

Classe immuable

Avant java8, la classe Date était C'est une classe mutable. Lorsque nous l'utilisons dans un environnement multithread, les programmeurs doivent confirmer que l'objet Date est thread-safe. Les API de date et d'heure de Java 8 fournissent des classes immuables thread-safe. Les programmeurs n'ont pas besoin de prendre en compte les problèmes de concurrence.

DomainModèleDrivenApproche de conception

Les nouvelles catégories de date et d'heure suivent la "Conception pilotée par domaine". Il est facile pour les développeurs de comprendre les fonctionnalités des méthodes et des classes.

Jetons ensuite un coup d'œil à la nouvelle API Date et Heure :

java.time.LocalDate :

LocalDate fournit uniquement la date mais pas l'heure. information. Il est immuable et thread-safe.

package org.smarttechie;
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
/**
* This class demonstrates JAVA 8 data and time API
* @author Siva Prasad Rao Janapati
* */
public class DateTimeDemonstration {
/**
* @param args
*/
public static void main(String[] args) {
   //Create date LocalDate localDate = LocalDate.now();
    System.out.println("The local date is :: " + localDate); 
   //Find the length of the month. That is, how many days are there for this month.
   System.out.println("The number of days available for this month:: " + localDate.lengthOfMonth()); 
   //Know the month name
   System.out.println("What is the month name? :: " + localDate.getMonth().name()); 
   //add 2 days to the today's date.
   System.out.println(localDate.plus(2, ChronoUnit.DAYS)); 
   //substract 2 days from today
   System.out.println(localDate.minus(2, ChronoUnit.DAYS)); 
   //Convert the string to date
   System.out.println(localDate.parse("2017-04-07"));
  }
}
Copier après la connexion

java.time.LocalTime :

LocalTime fournit uniquement des informations sur l'heure mais pas sur la date. Il s'agit d'une classe immuable et thread-safe.

package org.smarttechie;
import java.time.LocalTime;
import java.time.temporal.ChronoUnit;
/**
* This class demonstrates JAVA 8 data and time API
* @author Siva Prasad Rao Janapati
* */
public class DateTimeDemonstration {
/**
* @param args
*/
public static void main(String[] args) {
   //Get local time
   LocalTime localTime = LocalTime.now();
   System.out.println(localTime);
  //Get the hour of the day
  System.out.println("The hour of the day:: " + localTime.getHour());
  //add 2 hours to the time.
  System.out.println(localTime.plus(2, ChronoUnit.HOURS));
  //add 6 minutes to the time.
  System.out.println(localTime.plusMinutes(6));
  //substract 2 hours from current time
  System.out.println(localTime.minus(2, ChronoUnit.HOURS));
 }
}
Copier après la connexion

java.time.LocalDateTime:

LocalDateTime fournit des informations sur l'heure et la date, c'est une classe immuable et thread-safe

package orr.smarttechie;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
/**
* This class demonstrates JAVA 8 data and time API
* @author Siva Prasad Rao Janapati
*
*/
public class DateTimeDemonstration {
/**
* @param args
*/
public static void main(String[] args) {
    //Get LocalDateTime object
    LocalDateTime localDateTime = LocalDateTime.now();
    System.out.println(localDateTime);
    //Find the length of month. That is, how many days are there for this month.
    System.out.println("The number of days available for this month:: " + localDateTime.getMonth().length(true));
    //Know the month name
    System.out.println("What is the month name? :: " + localDateTime.getMonth().name());
    //add 2 days to today's date.
    System.out.println(localDateTime.plus(2, ChronoUnit.DAYS));
    //substract 2 days from today
    System.out.println(localDateTime.minus(2, ChronoUnit.DAYS));
  }
}
Copier après la connexion

java.time.Year :

L'année fournit des informations sur l'année, elle est immuable et thread-safe.

package orr.smarttechie;
import java.time.Year;
import java.time.temporal.ChronoUnit;
/**
* This class demonstrates JAVA 8 data and time API
* @author Siva Prasad Rao Janapati
*
*/
public class DateTimeDemonstration {
/**
* @param args
*/
public static void main(String[] args) {
   //Get year
   Year year = Year.now();
   System.out.println("Year ::" + year);
   //know the year is leap year or not
   System.out.println("Is year[" +year+"] leap year?"+ year.isLeap());
  }
}
Copier après la connexion

java.time.Duration :

La durée est utilisée pour calculer combien de secondes et de millisecondes sont incluses entre deux dates données. Ce n'est pas possible Variable et. thread-safe

java.time.Period:

La période est utilisée pour calculer combien de jours, de mois ou d'années, elle est immuable et thread-safe

package orr.smarttechie;
import java.time.LocalDate;
import java.time.Period;
import java.time.temporal.ChronoUnit;
/**
* This class demonstrates JAVA 8 data and time API
* @author Siva Prasad Rao Janapati
*
*/
public class DateTimeDemonstration {
/**
* @param args
*/
public static void main(String[] args) {
   LocalDate localDate = LocalDate.now();
   Period period = Period.between(localDate, localDate.plus(2, ChronoUnit.DAYS));
   System.out.println(period.getDays());
  }
}
Copier après la connexion


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal