Нет, это невозможно
По запросу: Да, мы знаем, что нет эквивалентной строки шаблона формата DateTimeFormatter.ISO_OFFSET_DATE_TIME
.
DateTimeFormatter.ISO_OFFSET_DATE_TIME
пропускает секунды и / илинано секунды, если они равны нулю.Если нано не ноль, «столько цифр будет выведено, сколько требуется». Не существует буквы шаблона или комбинации букв шаблона, которые бы дали вам такое же поведение.
Глубоко внутри 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
.Вы захотите использовать встроенный форматер.