簡體   English   中英

DateTimeFormatter.ISO_OFFSET_DATE_TIME 的等效格式字符串是什么?

[英]What is the equivalent format string of DateTimeFormatter.ISO_OFFSET_DATE_TIME?

我們是否知道是否有等效的格式字符串輸出與DateTimeFormatter.ISO_OFFSET_DATE_TIME相同的結果?

IE

ZonedDateTime dateTime = ZonedDateTime.now();
System.out.println(dateTime.format(DateTimeFormatter.ofPattern(pattern)));
System.out.println(dateTime.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME));

會輸出相同的

這對我有用:

    ZonedDateTime dateTime = ZonedDateTime.now();
    System.out.println(dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSXXX")));
    System.out.println(dateTime.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME));

2018-10-03T07:24:14.772+03:00 
2018-10-03T07:24:14.772+03:00

雖然它不會總是產生相同的結果,因為 ISO_OFFSET_DATE_TIME 根據 nanos 值打印具有不同長度的秒部分,而 .SSS 已固定 lengh = 3

     ZonedDateTime dateTime = ZonedDateTime.of(2001, 1, 1, 0, 0, 0, 1, ZoneId.systemDefault());
     System.out.println(dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSXXX")));
     System.out.println(dateTime.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME));   

     2001-01-01T00:00:00.000+02:00
     2001-01-01T00:00:00.000000001+02:00

不,這是不可能的

根據要求:是的,我們知道DateTimeFormatter.ISO_OFFSET_DATE_TIME沒有等效的格式模式字符串。

DateTimeFormatter.ISO_OFFSET_DATE_TIME如果它們為零,則省略秒和/或秒的納秒。 如果 nanos 非零,“將根據需要輸出盡可能多的數字。” 沒有模式字母或模式字母的組合會給你相同的行為。

DateTimeFormatter內部, ISO_OFFSET_DATE_TIME使用ISO_LOCAL_TIME ,而后者又以這種方式定義:

    ISO_LOCAL_TIME = new DateTimeFormatterBuilder()
            .appendValue(HOUR_OF_DAY, 2)
            .appendLiteral(':')
            .appendValue(MINUTE_OF_HOUR, 2)
            .optionalStart()
            .appendLiteral(':')
            .appendValue(SECOND_OF_MINUTE, 2)
            .optionalStart()
            .appendFraction(NANO_OF_SECOND, 0, 9, true)
            .toFormatter(ResolverStyle.STRICT, null);

這是獲取動態行為的方法:使用DateTimeFormatterBuilder及其optionalStartappendFraction方法。

ISO_OFFSET_DATE_TIME ,您不想完全復制ISO_OFFSET_DATE_TIME的行為。 您將需要使用內置格式化程序。

暫無
暫無

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

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