天天看點

讀Java實戰(第二版)筆記06_新的日期和時間API

作者:躺着的柒
讀Java實戰(第二版)筆記06_新的日期和時間API

讀Java實戰(第二版)筆記06_新的日期和時間API

1.Java 8之前的庫對日期和時間的支援非常不理想

2.TemporalField接口

2.1.定義了如何通路temporal對象某個字段的值的接口

2.2.ChronoField枚舉

2.2.1.實作TemporalField接口

3.LocalDate類

3.1.執行個體是一個不可變對象

3.2.隻提供了簡單的日期

3.3.不含當天的時間資訊

3.4.不附帶任何與時區相關的資訊

3.5.LocalDate.of

3.5.1.靜态工廠方法of建立一個LocalDate執行個體

3.6.LocalDate.now()

3.6.1.從系統時鐘中擷取目前的日期

3.7.LocalDate.parse

3.7.1.通過解析代表日期的字元串建立

3.8.getYear()

3.9.getMonthValue()

3.10.getDayOfMonth()

3.11.建議使用

4.ChronoLocalDate接口

4.1.盡量避免使用

4.1.1.開發者的代碼中會做一些假設

4.1.2.這些假設在不同的月曆系統中,有可能不成立

4.2.将程式的輸入或者輸出本地化時使用

5.曆法系統

5.1.ISO-8601的曆法系統

5.1.1.世界文明月曆系統的事實标準

5.2.ThaiBuddhistDate

5.3.MinguoDate

5.4.JapaneseDate

5.5.HijrahDate

5.5.1.伊斯蘭教月曆

5.5.2.最複雜

5.5.3.烏姆庫拉(Umm Al-Qura)變量

5.5.4.隻能首先可見于沙特阿拉伯

6.LocalTime類

6.1.LocalTime.of

6.1.1.靜态工廠方法of建立一個LocalTime執行個體

6.2.LocalTime.parse

6.2.1.通過解析代表時間的字元串建立

6.3.getHour()

6.4.getMinute()

6.5.getSecond()

7.DateTimeFormatter類

7.1.執行個體定義了如何格式化一個日期或者時間對象

7.2.字元串參數無法被解析為合法的LocalDate或LocalTime對象

7.2.1.DateTimeParseException異常

8.LocalDateTime類

8.1.LocalDate和LocalTime的合體

8.2.同時表示了日期和時間

8.3.不帶有時區資訊

8.4.toLocalDate

8.4.1.從LocalDateTime中提取LocalDate

8.5.toLocalTime

8.5.1.從LocalDateTime中提取LocalTime

8.6.atTime

8.6.1.向LocalDate傳遞一個時間對象

8.7.atDate

8.7.1.向LocalTime傳遞一個日期對象的方式

9.Instant類

9.1.java.time.Instant類

9.2.機器的日期和時間格式

9.2.1.為了便于機器使用

9.2.2.由秒及納秒所構成的數字

9.2.3.無法處理時間機關

9.3.以Unix元年時間(傳統的設定為UTC時區1970年1月1日午夜時分)開始所經曆的秒數進行計算

9.4.Instant.ofEpochSecond

9.4.1.單參數

9.4.1.1.傳遞代表秒數的值建立一個該類的執行個體

9.4.2.雙參數

9.4.2.1.接受第二個以納秒為機關的參數值

9.4.2.2.對傳入作為秒數的參數進行調整

9.4.2.3.納秒分片在0到999999999之間

9.5.Instant.now()

9.5.1.擷取目前時刻的時間戳

9.6.Instant.fromInstant()

9.7.toInstant()

9.8.棄用API跟新的日期和時間API之間執行互操作

10.Duration類

10.1.主要用于以秒和納秒衡量時間的長短

10.2.不能僅向between方法傳遞一個LocalDate對象做參數

10.3.Duration.between

10.4.對象都是不可修改的

10.5.以兩個temporal對象的內插補點的方式來定義它們的對象

11.Period類

11.1.Period.between

11.1.1.得到兩個LocalDate之間的時長

11.2.對象都是不可修改的

11.3.以兩個temporal對象的內插補點的方式來定義它們的對象

12.表示時間間隔的通用方法

12.1.

讀Java實戰(第二版)筆記06_新的日期和時間API

13.表示時間點的通用方法

13.1.

讀Java實戰(第二版)筆記06_新的日期和時間API

14.TemporalAdjusters類

14.1.方法名基本就是問題陳述

14.2.可以進行更加複雜的日期操作

14.2.1.不再局限于一次隻能改變它的一個值,并且你還可按照需求定義自己的日期轉換器

14.3.TemporalAdjusters.ofDateAdjuster

14.3.1.使用Lambda表達式定義TemporalAdjuster對象

14.3.2.接受一個UnaryOperator類型的參數

14.4.

讀Java實戰(第二版)筆記06_新的日期和時間API

15.DateTimeFormatter類

15.1.java.time.format包

15.2.線程安全

15.3.DateTimeFormatter.BASIC_ISO_DATE

15.3.1.20230202

15.4.DateTimeFormatter.ISO_LOCAL_DATE

15.4.1.2023-02-02

15.5.DateTimeFormatter.ofPattern

15.5.1.單參數

15.5.2.雙參數

15.5.2.1.第二參數Locale的格式器

16.DateTimeFormatterBuilder類

16.1.區分大小寫的解析

16.2.柔性解析

16.2.1.允許解析器使用啟發式的機制去解析輸入

16.2.2.不精确地比對指定的模式

16.3.填充

16.4.在格式器中指定可選節

17.ZoneId類

17.1.java.time.ZoneId

17.2.無法修改的

17.3.時區處理

17.4.ZoneId.of

17.5.toZoneId()

17.6.

讀Java實戰(第二版)筆記06_新的日期和時間API

18.ZoneOffset類

18.1.ZoneId的一個子類

18.2.目前時間和倫敦格林尼治子午線時間的差異

18.3.偏差實際上對應的是美國東部标準時間

18.4.并未考慮任何夏令時的影響

18.5.大多數情況下,不推薦使用