[英]How to use ZoneOffset, ZoneId with LocalDateTime properly in Java 8?
這里的目標是將LocalDateTime轉換為epoch秒來回。
假設我將LocalDateTime定義為:
LocalDateTime now = LocalDateTime.now();
我想將它轉換為時間亞洲/加爾各答時區的第二紀元,我可以這樣做:
long epochSecondNow = now.atZone(ZoneId.of("Asia/Kolkata")).toEpochSecond();
現在,我想從epochSecondNow再次生成'now':
LocalDateTime類有一個方法' ofEpochSecond(long epochSecond,long nanoOfSecond, ZoneOffset zoneOffset)
',它將epoch second,nano of second和ZoneOffset作為參數。
我無法使用“Asia / Kolkata”創建ZoneOffset。 我應該如何為我的區域創建ZoneOffset對象以便使用'ofEpochSecond'方法。 還有其他方法嗎?
謝謝!
嘗試使用Instant.ofEpochSecond
Instant instant = Instant.ofEpochSecond(epochSecondNow);
ZonedDateTime atZone = instant.atZone(ZoneId.of("Asia/Kolkata"));
LocalDateTime localDateTime = atZone.toLocalDateTime();
如果要使用系統時區,可以使用ZoneId.systemDefault()
好吧,我只是按照以下方式執行此操作,方法是通過將偏移值作為String傳遞來獲取ZoneOffset:
LocalDateTime nowFromEpochSecond = LocalDateTime.ofEpochSecond(epochSecondNow,0,ZoneOffset.of("+05:30"));
我希望有一種更簡潔的方法,而不是硬編碼偏移和區域ID。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.