考慮一個字串"2022-03-23 21:06:29.4933333 00:00"。如何在 Java 中將上述 DateTimeOffset 字串決議為 LocalDateTime?
我嘗試使用以下 DateTimeFormatter 但格式似乎不正確:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss\[.nnnnnnn\] \[ |-\]hh:mm\]");
LocalDateTime dateTime = LocalDateTime.parse(timestamp, formatter)
uj5u.com熱心網友回復:
首先,從手頭的JavDocsDateTimeFormatter開始,這將真正有助于確定您需要哪些說明符
首先要做的是將文本決議為 a ZonedDateTime,LocalDateTime不會決議帶有時區(AFAIK)的輸入值,您“可能”能夠強制它,但有什么意義呢?
String text = "2022-03-23 21:06:29.4933333 00:00";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss.SSSSSSS z");
ZonedDateTime zdt = ZonedDateTime.parse(text, formatter);
System.out.println(zdt);
這印...
2022-03-23T21:06:29.493333300Z
現在您可以使用ZonedDateTime#toLocalDateTime,但這不會考慮用戶/計算機的當前時區。
如果您需要將 to 轉換ZonedDateTime為LocalDateTime,最好在 away 中進行,這將轉換時間(如果需要,還有日期)以最好地表示當前時區內的時間(好吧,我打字很困惑)
例如,將輸入值轉換為我當前的時區( 11 小時)將如下所示......
ZoneId currentZone = ZoneId.systemDefault();
ZonedDateTime currentZDT = zdt.withZoneSameInstant(currentZone);
System.out.println(currentZDT);
LocalDateTime ldt = currentZDT.toLocalDateTime();
System.out.println(ldt);
這將列印...
2022-03-24T08:06:29.493333300 11:00[Australia/Melbourne]
2022-03-24T08:06:29.493333300
這意味著 3 月 23 日晚上 9 點 06 分,格林奇 (GMT),我住的地方是 3 月 24 日上午 8 點 06 分。
現在您可以使用不同ZoneId的 s 轉換TimeZone為不是當前計算機的a TimeZone,但我會留給您自己試驗(例如,我使用Convert ZonedDateTime to LocalDateTime at time zone作為我的示例的基礎)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/448452.html
