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値は、「必要に応じて多くの桁が出力されるように。」非ゼロの場合 あなたに同じ動作を与えるパターン文字のないパターン文字または組み合わせはありません。
心の奥底には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
、そのoptionalStart
とappendFraction
方法を。
余談として、あなたはの振る舞いコピーしないISO_OFFSET_DATE_TIME
正確に。あなたは、組み込みのフォーマッタを使用したいと思うでしょう。