In diesem Artikel geht es hauptsächlich um den eigentlichen Kampf gegen das neue Datum und Zeit API in Java8. Die neuen Date- und Time-Klassen sind das Ergebnis lang erwarteter Anfragen der Java-Entwickler-Community. Die Date-Klasse, die vor Java8 existierte, wurde immer kritisiert, und viele Leute entscheiden sich für die Verwendung der Datumsbibliothek Joda-Time eines Drittanbieters. Die Datums- und Uhrzeit-API in Java8 wurde vom Autor von jodatime entwickelt und implementiert alle Inhalte von JSR310. Diese neuen APIs befinden sich im Paket java.time.
Da Joda-Time und Date4j von Drittanbietern bereits leistungsstark genug sind, warum muss Java8 sie dann erneut implementieren? Ein Grund dafür ist, dass diese Drittanbieter-Bibliotheken wie der Standard Kompatibilitätsprobleme haben JSF-Datum Der Konverter ist nicht mit der Joda-Time-API kompatibel. Sie müssen bei jeder Verwendung einen eigenen Konverter schreiben. Bei JSR310 sind alle seine Bestimmungen in Java8 implementiert.
Unveränderliche Klasse
Vor Java8, die Date-Klasse war Es ist eine veränderliche Klasse. Wenn wir es in einer Multithread-Umgebung verwenden, sollten Programmierer bestätigen, dass das Date-Objekt threadsicher ist. Die Datums- und Uhrzeit-APIs von Java 8 stellen threadsichere, unveränderliche Klassen bereit. Programmierer müssen sich nicht mit Parallelitätsproblemen befassen.
DomäneModellGesteuerterDesignansatz
Die neuen Datums- und Zeitkategorien folgen „Domain Driven Design“. Für Entwickler ist es einfach, die Funktionalität von Methoden und Klassen zu verstehen.
java.time.LocalDate:
LocalDate liefert nur das Datum, aber keine Uhrzeit Information. Es ist unveränderlich und threadsicher.
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 stellt nur Zeit-, aber keine Datumsinformationen bereit. Es ist eine unveränderliche Klasse und Thread-sicher.
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 stellt Zeit- und Datumsinformationen bereit, es ist eine unveränderliche Klasse und Thread-sicher
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:
Year liefert Jahresinformationen, ist unveränderlich und Thread-sicher.
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:
Die Dauer wird verwendet, um zu berechnen, wie viele Sekunden und Millisekunden zwischen zwei angegebenen Daten liegen. Dies ist nicht möglich Thread-sicher
java.time.Period:
Period wird verwendet, um zu berechnen, wie viele Tage, Monate oder mehr zwischen zwei angegebenen Daten liegen. Wie viele Jahre sind es ist unveränderlich, klassen- und threadsicher
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()); } }
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die neuen Datums- und Uhrzeitklassen in Java 8. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!