簡體   English   中英

ISO_OFFSET_DATE_TIME 的 Java 日期時間格式模式

[英]Java date time format pattern for ISO_OFFSET_DATE_TIME

我追求的是ISO_OFFSET_DATE_TIME的日期時間格式模式

2019-09-30T10:05:16+10:00

yyyy-MM-dd'T'HH:mm:ssZ2019-09-30T10:05:16+1000有效,但我需要在區域偏移量中使用冒號

如果這是不可能的,我將需要一個正則表達式。

你需要uuuu-MM-dd'T'HH:mm:ssXXX在這里。

String str = "2019-09-30T10:05:16+10:00";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ssXXX");
OffsetDateTime datetime = OffsetDateTime.parse(str, formatter);
System.out.println(datetime);

這取決於。 DateTimeFormatter.ISO_OFFSET_DATE_TIME打印和解析帶和不帶秒以及帶和不帶秒小數的字符串,后者最多 9 位小數。

如果您只需要問題中給出的格式變體的模式,有秒和沒有秒,MC 皇帝的答案正是您所需要的。

如果您需要ISO_OFFSET_DATE_TIME的完全靈活性,那么沒有任何模式ISO_OFFSET_DATE_TIME您的需求。 然后你需要去正則表達式的方式。 這反過來又很難給你像格式化程序那樣嚴格的驗證。 並且正則表達式可能仍然變得復雜且難以閱讀。

鏈接:我對類似問題的回答以及更多細節。

您可以使用yyyy-MM-dd'T'HH:mm:ssZZZZZuuuu-MM-dd'T'HH:mm:ssXXX

演示:

import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;

public class Main {
    public static void main(String[] args) {
        String strDateTime = "2019-09-30T10:05:16+10:00";
        OffsetDateTime odt = OffsetDateTime.parse(strDateTime);
        // Default format i.e. OffsetDateTime#toString
        System.out.println(odt);

        // Custom format
        System.out.println(odt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZZZZZ")));
        System.out.println(odt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssXXX")));
    }
}

輸出:

2019-09-30T10:05:16+10:00
2019-09-30T10:05:16+10:00
2019-09-30T10:05:16+10:00

暫無
暫無

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

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