您好,登錄后才能下訂單哦!
今天小編給大家分享一下Java8中的時區日期時間怎么處理的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
我同時也發現,這三個類沒有任何時區相關的信息,但也不能說它們沒處理時區,而只能說它們有選擇的隱藏了時區的處理。它們內部會使用操作系統當前的時區。
以此同時,Java 在 java.time
包中也提供了幾個類用于處理需要關注時區的日期時間 API。它們是 java.time.ZonedDateTime
和 java.time.ZoneId
。前者用于處理需要時區的日期時間,后者用于處理時區。
ZonedDateTime
和 LocalDateTime
類似,幾乎有著相同的 API。從某些方面說,ZonedLocalTime
如果不傳遞時區信息,那么它會默認使用操作系統的時區,這樣,結果其實和 LocalDateTime
是類似的。
比如,我們可以使用 ZonedDateTime
的 now()
方法返回當前時區 ( 操作系統時區 ) 的日期時間,調用 parse()
方法可以將一個包含了時區信息的字符串格式的日期時間轉化為一個 ZonedDateTime 實例。
import java.time.ZonedDateTime; public class Java8Tester { public static void main(String args[]) { Java8Tester tester = new Java8Tester(); tester.run(); } public void run() { ZonedDateTime now = ZonedDateTime.now(); System.out.println("當前日期時間是:" + now); ZonedDateTime datetime = ZonedDateTime.parse("2012-10-10T21:58:00+08:00"); System.out.println("日期時間是:" + datetime); } }
運行結果如下
當前日期時間是:2018-10-08T22:21:56.806597+08:00[Asia/Shanghai] 日期時間是:2012-10-10T21:58+08:00
我們還可以調用 ZonedDateTime
對象的 toLocalDate()
和 toLocalTime()
方法將獲取該實例的轉換為本地的日期和時間
import java.time.LocalTime; import java.time.LocalDate; import java.time.ZonedDateTime; public class Java8Tester { public static void main(String args[]) { Java8Tester tester = new Java8Tester(); tester.run(); } public void run() { ZonedDateTime now = ZonedDateTime.now(); System.out.println("當前日期時間是:" + now); LocalDate date = now.toLocalDate(); System.out.println("本地日期是:" + now); LocalTime time = now.toLocalTime(); System.out.println("本地時間是:" + time); } }
運行結果如下
當前日期時間是:2022-10-08T22:28:10.389487+08:00[Asia/Shanghai] 本地日期是:2022-10-08T22:28:10.389487+08:00[Asia/Shanghai] 本地時間是:22:28:10.389487
P.S 這個返回值好詭異,為啥 toLocalDate()
還返回了時間?
時區相關的信息,我們可以使用 ZoneId
類來處理。
比如可以調用 ZoneId
類的靜態方法 systemDefault()
返回當前的時區。
import java.time.ZonedDateTime; import java.time.ZoneId; public class Java8Tester { public static void main(String args[]) { Java8Tester tester = new Java8Tester(); tester.run(); } public void run() { ZoneId currentZone = ZoneId.systemDefault(); System.out.println("當前時區是: " + currentZone); } }
運行結果如下
當前時區是: Asia/Shanghai
我們還可以調用 ZonedDateTime
實例的 getZone()
方法獲取實例所在的時區
import java.time.ZonedDateTime; import java.time.ZoneId; public class Java8Tester { public static void main(String args[]) { Java8Tester tester = new Java8Tester(); tester.run(); } public void run() { ZonedDateTime now = ZonedDateTime.now(); System.out.println("當前時區是: " + now.getZone()); } }
運行結果如下
當前時區是: Asia/Shanghai
以上就是“Java8中的時區日期時間怎么處理”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。