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.
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.
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")); } }
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)); } }
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)); } }
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()); } }
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()); } }
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!