簡體   English   中英

將 ISO 8601 時間戳字符串轉換為 java.time.OffsetDateTime

[英]Converting ISO 8601 timestamp String to java.time.OffsetDateTime

假設我有一個 ISO 8601 格式的日期: "2017-01-10T14:55:32+01:00"

如何將其轉換為OffsetDateTime

我在這里沒有找到任何答案。 我嘗試了以下操作:

public OffsetDateTime stringToOffsetDateTime() {
        return OffsetDateTime.from(Instant.parse("2019-12-12T10:39:40-02:00"));
    }

但它拋出DateTimeParseException

最短的答案是:

OffsetDateTime.parse("2017-01-10T14:55+01:00")

它默認識別 ISO 8601 格式(使用 DateTimeFormatter.ISO_DATE_TIME)。

如果需要,您可以通過這種方式使用其他格式化程序:

OffsetDateTime.parse(iso8601String, DateTimeFormatter.ISO_OFFSET_DATE);

所有格式化程序都可以在這里瀏覽: https ://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html

OP 的嘗試失敗,因為使用了 Instant 的格式化程序。 這自然失敗了,因為 Instant 總是在 UTC 中,所以即使可能你會丟失時區信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM