Java日期時間API系列6-----Jdk8中java.time包中的新的日期時間API類


  因為Jdk7及以前的日期時間類的不方便使用問題線程安全問題等問題,2005年,Stephen Colebourne創建了Joda-Time庫,作為替代的日期和時間API。Stephen向JCP提交了一個規范,他本人作為規范的領導人,該規范就是JSR 310,在Java8中實現並發布。

1.Java8日期、時間API包介紹

  • java.time包:這是新的Java日期/時間API的基礎包,所有的主要基礎類都是這個包的一部分,如:LocalDate, LocalTime, LocalDateTime, Instant, Period, Duration等等。所有這些類都是不可變的和線程安全的,在絕大多數情況下,這些類能夠有效地處理一些公共的需求。
  • java.time.chrono包:這個包為非ISO的日歷系統定義了一些泛化的API,我們可以擴展AbstractChronology類來創建自己的日歷系統。
  • java.time.format包:這個包包含能夠格式化和解析日期時間對象的類,在絕大多數情況下,我們不應該直接使用它們,因為java.time包中相應的類已經提供了格式化和解析的方法。
  • java.time.temporal包:這個包包含一些時態對象,我們可以用其找出關於日期/時間對象的某個特定日期或時間,比如說,可以找到某月的第一天或最后一天。你可以非常容易地認出這些方法,因為它們都具有“withXXX”的格式。
  • java.time.zone包:這個包包含支持不同時區以及相關規則的類

 

2.Java8日期時間API主要類有:

LocalDate:表示不帶時間的日期
LocalTime:表示不帶日期的時間
LocalDateTime:日期和時間類
ZoneId:時區
ZonedDateTime:一個帶時區的完整時間
Instant:Unix 時間,它代表的是時間戳,比如 2018-01-14T02:20:13.592Z
Clock:獲取某個時區下當前的瞬時時間,日期或者時間
Duration:表示一個絕對的精確跨度,使用毫秒為單位
Period:這個類表示與 Duration 相同的概念,但是以人們比較熟悉的單位表示,比如年、月、周
DateTimeFormatter:格式化輸出
TemporalAdjusters:獲得指定日期時間等,如當月的第一天、今年的最后一天等

ChronoUnit:時間單位枚舉,用於加減操作

ChronoField:字段枚舉,用於設置字段值。

主要類圖:

 

 時間范圍示意圖:

 

 

參考:https://www.iteye.com/news/26064

  https://segmentfault.com/a/1190000020179839

  《Java8實戰》

  https://blog.csdn.net/wangsun300/article/details/103403490


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM