java8中新的Date和Time詳解
新Date類和Time類背后的設計原則:
不可變類
java8之前,Date類都是可變類。當我們在多線程環(huán)境下使用它,編程人員應該確認Date對象的線程安全。Java8的Date和Time API提供了線程安全的不可變類。編程人員不用考慮并發(fā)的問題。
領域模型驅(qū)動設計方法
新的日期和時間的類別遵循“域驅(qū)動設計”。對于開發(fā)者來說,理解方法和類的功能是很容易的。
接下來讓我們來看看新Date和Time API:
1.java.time.LocalDate:
LocalDate只提供日期不提供時間信息。它是不可變類且線程安全的。
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只提供時間而不提供日期信息,它是不可變類且線程安全的。
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提供時間和日期的信息,它是不可變類且線程安全的
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提供年的信息,它是不可變類且線程安全的。
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是用來計算兩個給定的日期之間包含多少秒,多少毫秒,它是不可變類且線程安全的
6.java.time.Period:
Period是用來計算兩個給定的日期之間包含多少天,多少月或者多少年,它是不可變類且線程安全的
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());
}
}
相關文章
Spring框架學習之Spring?@Autowired實現(xiàn)自動裝配的代碼
自動裝配就是說,你不用手動實現(xiàn)bean之間的組合關系,只要使用了@Autowired注解,程序就會自動的注入這個需要的bean,前提是你的Spring容器有這個bean,這篇文章主要介紹了Spring?@Autowired實現(xiàn)自動裝配,需要的朋友可以參考下2021-12-12
Spring Boot Admin的使用詳解(Actuator監(jiān)控接口)
這篇文章主要介紹了Spring Boot Admin的使用詳解(Actuator監(jiān)控接口),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-05-05
idea install 時提示jdk的某個jar包的包不存在的問題
這篇文章主要介紹了idea install 時提示jdk的某個jar包的包不存在的問題,本文給大家分享解決方法,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09
Java StringBuffer類與StringBuilder類用法實例小結(jié)
這篇文章主要介紹了Java StringBuffer類與StringBuilder類用法,結(jié)合實例形式總結(jié)分析了Java StringBuffer類與StringBuilder類的功能、原理及添加、刪除、替換、截取等操作實現(xiàn)技巧,需要的朋友可以參考下2019-03-03

