The design principles behind the new Date and Time classes:
Immutable Class
Before java8, the Date class was all mutable. When we use it in a multithreaded environment, programmers should confirm that the Date object is thread-safe. Java8's Date and Time APIs provide thread-safe immutable classes. Programmers don't have to consider the issue of concurrency.
Domain model-driven design method
The new categories of dates and times follow the "Domain Driven Design". It is easy for developers to understand the functions of methods and classes.
Next let's take a look at the new Date and Time APIs:
1.java.time.LocalDate:
LocalDate only provides dates but not time information. It is immutable and 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")); }}2.java.time.LocalTime:
LocalTime only provides time and not date information, it is immutable and 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)); }}3.java.time.LocalDateTime:
LocalDateTime provides information about time and date, it is immutable and 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)); }} 4.java.time.Year:
Year provides information about the year, it is immutable and 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()); }}5.java.time.Duration:
Duration is used to calculate how many seconds and how many milliseconds are contained between two given dates. It is immutable and thread-safe.
6.java.time.Period:
Period is used to calculate how many days, months or years are included between two given dates. It is immutable and 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()); }}