㈠ java日期時間API系列19--Jdk8,ZonedDateTime和時區轉換。
Java日期時間API系列6中,通過時間范圍示意圖,可以清晰看到ZonedDateTime是LocalDateTime與ZoneId的結合,用於處理時區相關的時間。下面將詳細介紹時區相關知識,以及如何使用Java處理時區。
時區是地球上的地理區域,按照天文時區劃分,全球共有24個時區。中國北京位於東8區,若英國(格林尼治天文台舊址)時間為6點,那麼北京時間為14點。為統一世界時間,1884年的國際經度會議規定了零時區(GMT+00),東區和西區各為1-12個時區。GMT代表格林尼治標准時間,UTC是協調世界時,基於原子時秒長,精確度更高,作為世界標准時間使用。
計算機中UNIX時間戳,是以GMT/UTC時間「1970-01-01T00:00:00」為起點,到具體時間的秒數,不考慮閏秒,簡化了計算機操作復雜度。例如,若電腦系統時間為2015年2月27日15點43分0秒,設默認時區為東8區,則0時區的時間為2015年2月27日7點43分0秒,UNIX時間戳為1425022980秒。
Java中的ZoneId為時區ID,如「Europe/Paris」。常用時區名稱和縮寫可通過Java獲取,使用`java.time.ZoneId.getAvailableZoneIds()`方法。
ZonedDateTime是在ISO-8601日歷系統中包含時區的日期時間,如「2007-12-03T10:15:30+01:00 Europe/Paris」。創建ZonedDateTime時,需傳入日期和時區,轉換時可使用`java.time.ZonedDateTime`類的方法。
常用時區創建和轉換,如北京時間、巴黎時間、紐約時間、東京時間等。轉換代碼實例展示了如何將LocalDate(僅包含日期)轉換為帶有時區的ZonedDateTime,輸出為「2020-02-19T00:00+08:00[Asia/Shanghai]」。常用時間創建和時區轉換的代碼實例還包括創建常用時間的ZonedDateTime,以及執行時區間的轉換計算。
最後,介紹時區時間的格式化與解析。格式化代碼使用了ISO常用格式化,如「yyyy-MM-dd'T'HH:mm:ssZ」。解析代碼展示了如何從字元串中解析出時區時間。以上內容提供了Java處理時區的全面指南。