DateTimeFormatter.ISO_OFFSET_DATE_TIMEの同等のフォーマット文字列は何ですか?

user1589188:

同じ結果を出力する同等のフォーマット文字列がある場合、私たちは知っていますかDateTimeFormatter.ISO_OFFSET_DATE_TIME

すなわち

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

出力は同じだろう

オレVV:

いいえ、これは不可能です

ご要望に応じて:はい、我々は全く同等のフォーマットパターン文字列が存在しないことを知っていますDateTimeFormatter.ISO_OFFSET_DATE_TIME

DateTimeFormatter.ISO_OFFSET_DATE_TIME彼らはゼロであれば秒および/または第二のナノを省略します。nanos値は、「必要に応じて多くの桁が出力されるように。」非ゼロの場合 あなたに同じ動作を与えるパターン文字のないパターン文字または組み合わせはありません。

心の奥底にはDateTimeFormatterISO_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正確に。あなたは、組み込みのフォーマッタを使用したいと思うでしょう。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=178615&siteId=1