好
影片2 日期與時間運算及格式化與解析
影片3 時區與日光節約時間
Java SE JDK 11 中的日期與時間運算
一、簡介
Java SE JDK 11 的 java.time
package 提供了基於 JSR 310 標準所開發的強大的日期與時間 API。這些類別旨在解決舊版 java.util.Date 和 java.util.Calendar 類別的不足,提供更直觀且強大的操作。
二、核心類別
Java SE JDK 11 的日期與時間 API 包含以下幾個核心類別:
l LocalDate:表示不包含時間的日期,例如 2024-12-25。
l LocalTime:表示不包含日期的時間,例如 16:12:13.045194300。
l LocalDateTime:表示包含日期和時間的日期時間,例如
2024-12-25T16:12:13.045194300。
l ZonedDateTime:表示帶有時區的日期時間,例如
2024-12-25T16:12:13.045194300+08:00[Asia/Taipei]。
l Instant:表示時間戳,即從 1970-01-01T00:00:00Z 開始的毫秒數。
n 毫秒
0.001秒
毫秒是最常見的時間單位之一,通常用於計時和測量較短時間間隔的應用。許多 API 都會使用毫秒來進行內部運算,因為它具有足夠的精度,同時便於與其他單位轉換。
l Period:表示日期的間隔,以年、月、日來衡量。
l Duration:表示時間的長度,通常以秒和奈秒來衡量。
n 奈秒
0.000,000,001秒
奈秒是更高精度的時間單位,通常用於需要極高精度計時的情況,例如性能測試或計算機科學研究。
三、建立日期與時間
使用靜態方法來建立日期與時間實體:
l LocalDate
l LocalTime
l LocalDateTime
l ZonedDateTime
四、日期與時間運算
Java 提供了豐富的 API 來操作日期與時間。
1.
加減日期
2.
加減時間
3.
計算日期間隔
4.
計算時間間隔
5.
日期時間比較
五、格式化與解析
在 Java 中,日期和時間的格式化是一個重要的主題,尤其是在顯示和解析日期時間字串時。
使用 java.time API 可以輕鬆地進行這些操作。Java 提供了 DateTimeFormatter 用於格式化和解析日期與時間。
1.
格式化日期與時間
2.
解析日期與時間
3.
常見的格式化模式符號
以下是一些常見的格式化模式符號,可以用來建立自定義的格式化模式:
n y:年(例如 yyyy 表示四位年份,yy
表示兩位年份)
n M:月(例如 MM 表示兩位月份,M 表示不帶零前綴的月份)
n d:日(例如 dd 表示兩位日期,d 表示不帶零前綴的日期)
n H:24小時制的小時(例如 HH 表示兩位小時)
n m:分鐘(例如 mm 表示兩位分鐘)
n s:秒(例如 ss 表示兩位秒)
n S:毫秒(例如 SSS 表示三位毫秒)
n a:AM/PM 標誌(例如 a 表示上午或下午)
六、時區
要在不同時區之間進行日期時間轉換,Java 提供了豐富的 API 來幫助你進行這些操作。
1.
從本地時間轉換到另一個時區的時間
2.
從另一個時區轉換到本地時間
3.
比較不同時區的日期和時間
4.
計算兩個時間點之間的時間差
5.
處理時區的格式化
七、日光節約時間
日光節約時間(Daylight Saving Time, DST)是一種通過在夏季月份將時鐘撥快一小時來充分利用日光的方法。
通過將時間提前,人們在清醒時可以享受更多的日光,並減少夜間照明所需的能量。
1.
美國的日光節約時間
l 開始日期:每年三月的第二個星期日凌晨 2:00。
l 結束日期:每年十一月的第一個星期日凌晨 2:00。
l 調整方式:
n 在開始日期,時鐘撥快一小時(例如,從凌晨 1:59 變為凌晨 3:00)。
n 在結束日期,時鐘撥慢一小時(例如,從凌晨 1:59 變為凌晨 1:00)。
2.
例外情況:
l 亞利桑那州和夏威夷州不遵守日光節約時間。
l 美國的一些海外領土,如波多黎各、美屬維爾京群島、美屬薩摩亞和關島,也不遵守日光節約時間。
日光節約時間的轉換可能會對時間計算造成一定的困擾。
1.
把時間設定為特定時區時考慮日光節約時間。
2.
不同時區的日期時間轉換時考慮日光節約時間。
3.
時間點是否處於日光節約時間內。