Spec-Zone.ru › OpenJDK 17

Класс DateTimeFormatterBuilder

java.lang.Object
java.time.format.DateTimeFormatterBuilder
public final class DateTimeFormatterBuilder extends Object
Построитель для создания форматировщиков дат и времени.

Это позволяет создать DateTimeFormatter. Все форматировщики дат и времени в конечном итоге создаются с помощью этого построителя.

Можно добавить все базовые элементы даты и времени:

  • Значение - числовое значение
  • Дробная часть - дробное значение, включая десятичную точку. Всегда используйте это при выводе дробных частей, чтобы убедиться, что дробная часть будет правильно обработана при парсинге
  • Текст - текстовое представление значения
  • Идентификатор/смещение смещения - смещение часового пояса
  • Идентификатор часового пояса - часовой пояс
  • Текст часового пояса - имя часового пояса
  • Идентификатор хронологии - хронология
  • Текст хронологии - имя хронологии
  • Литерал - текстовый литерал
  • Вложенные и необязательные - форматирование может быть вложенным или необязательным
Кроме того, можно использовать сокращенные шаблоны, в основном совместимые с java.text.SimpleDateFormat SimpleDateFormat, см. appendPattern(String). На практике это просто анализирует шаблон и вызывает другие методы построителя.
Требования к реализации:
Этот класс является изменяемым построителем, предназначенным для использования из одной потоковой нити.
С:
1.8

Краткое описание конструкторов

Конструктор Описание
DateTimeFormatterBuilder()
Создает новый экземпляр построителя.

Краткое описание методов

Модификатор и тип Метод Описание
DateTimeFormatterBuilder append(DateTimeFormatter formatter)
Добавляет все элементы форматировщика в построитель.
DateTimeFormatterBuilder appendChronologyId()
Добавляет идентификатор хронологии, такой как 'ISO' или 'ThaiBuddhist', в форматировщик.
DateTimeFormatterBuilder appendChronologyText(TextStyle textStyle)
Добавляет имя хронологии в форматировщик.
DateTimeFormatterBuilder appendDayPeriodText(TextStyle style)
Добавляет текст периода дня в форматировщик.
DateTimeFormatterBuilder appendFraction(TemporalField field, int minWidth, int maxWidth, boolean decimalPoint)
Добавляет дробную часть поля даты и времени в форматировщик.
DateTimeFormatterBuilder appendGenericZoneText(TextStyle textStyle)
Добавляет общее имя часового пояса, например, 'Pacific Time', в форматировщик.
DateTimeFormatterBuilder appendGenericZoneText(TextStyle textStyle, Set<ZoneId> preferredZones)
Добавляет общее имя часового пояса, например, 'Pacific Time', в форматировщик.
DateTimeFormatterBuilder appendInstant()
Добавляет мгновение времени с использованием ISO-8601 в форматировщик, форматируя дробные цифры группами по три.
DateTimeFormatterBuilder appendInstant(int fractionalDigits)
Добавляет мгновение времени с использованием ISO-8601 в форматировщик с управлением количеством дробных цифр.
DateTimeFormatterBuilder appendLiteral(char literal)
Добавляет символьный литерал в форматировщик.
DateTimeFormatterBuilder appendLiteral(String literal)
Добавляет строковый литерал в форматировщик.
DateTimeFormatterBuilder appendLocalized(FormatStyle dateStyle, FormatStyle timeStyle)
Добавляет локализованный шаблон даты и времени в форматировщик.
DateTimeFormatterBuilder appendLocalizedOffset(TextStyle style)
Добавляет локализованное смещение часового пояса, например 'GMT+01:00', в форматировщик.
DateTimeFormatterBuilder appendOffset(String pattern, String noOffsetText)
Добавляет смещение часового пояса, например '+01:00', в форматировщик.
DateTimeFormatterBuilder appendOffsetId()
Добавляет смещение часового пояса, например '+01:00', в форматировщик.
DateTimeFormatterBuilder appendOptional(DateTimeFormatter formatter)
Добавляет форматировщик в построитель, который будет необязательно форматировать/парсить.
DateTimeFormatterBuilder appendPattern(String pattern)
Добавляет элементы, определённые в указанном шаблоне, в построитель.
DateTimeFormatterBuilder appendText(TemporalField field)
Добавляет текст поля даты и времени в форматировщик с использованием полного стилизованного текста.
DateTimeFormatterBuilder appendText(TemporalField field, TextStyle textStyle)
Добавляет текст поля даты и времени в форматировщик.
DateTimeFormatterBuilder appendText(TemporalField field, Map<Long,String> textLookup)
Добавляет текст поля даты и времени в форматировщик, используя указанную карту для предоставления текста.
DateTimeFormatterBuilder appendValue(TemporalField field)
Добавляет значение поля даты и времени в форматировщик с использованием обычного стиля вывода.
DateTimeFormatterBuilder appendValue(TemporalField field, int width)
Добавляет значение поля даты и времени в форматировщик с использованием фиксированной ширины с нулевым заполнением.
DateTimeFormatterBuilder appendValue(TemporalField field, int minWidth, int maxWidth, SignStyle signStyle)
Добавляет значение поля даты и времени в форматировщик, предоставляя полный контроль над форматированием.
DateTimeFormatterBuilder appendValueReduced(TemporalField field, int width, int maxWidth, int baseValue)
Добавляет уменьшенное значение поля даты и времени в форматировщик.
DateTimeFormatterBuilder appendValueReduced(TemporalField field, int width, int maxWidth, ChronoLocalDate baseDate)
Добавляет уменьшенное значение поля даты и времени в форматировщик.
DateTimeFormatterBuilder appendZoneId()
Добавляет идентификатор часового пояса, например 'Europe/Paris' или '+02:00', в форматировщик.
DateTimeFormatterBuilder appendZoneOrOffsetId()
Добавляет идентификатор часового пояса, например 'Europe/Paris' или '+02:00', в форматировщик, используя наилучший доступный идентификатор часового пояса.
DateTimeFormatterBuilder appendZoneRegionId()
Добавляет идентификатор региона часового пояса, например 'Europe/Paris', в форматировщик, отклоняя идентификатор часового пояса, если он является ZoneOffset.
DateTimeFormatterBuilder appendZoneText(TextStyle textStyle)
Добавляет имя часового пояса, например 'British Summer Time', в форматировщик.
DateTimeFormatterBuilder appendZoneText(TextStyle textStyle, Set<ZoneId> preferredZones)
Добавляет имя часового пояса, например 'British Summer Time', в форматировщик.
static String getLocalizedDateTimePattern(FormatStyle dateStyle, FormatStyle timeStyle, Chronology chrono, Locale locale)
Получает шаблон форматирования для стилей даты и времени для локали и хронологии.
DateTimeFormatterBuilder optionalEnd()
Завершает необязательный раздел.
DateTimeFormatterBuilder optionalStart()
Отмечает начало необязательного раздела.
DateTimeFormatterBuilder padNext(int padWidth)
Заставляет следующий добавленный принтер/парсер выравнивать ширину до фиксированного значения с пробелом.
DateTimeFormatterBuilder padNext(int padWidth, char padChar)
Заставляет следующий добавленный принтер/парсер выравнивать ширину до фиксированного значения.
DateTimeFormatterBuilder parseCaseInsensitive()
Изменяет стиль парсинга на регистронезависимый для остальной части форматировщика.
DateTimeFormatterBuilder parseCaseSensitive()
Изменяет стиль парсинга на регистрозависимый для остальной части форматировщика.
DateTimeFormatterBuilder parseDefaulting(TemporalField field, long value)
Добавляет значение по умолчанию для поля в форматировщик для использования при парсинге.
DateTimeFormatterBuilder parseLenient()
Изменяет стиль парсинга на снисходительный для остальной части форматировщика.
DateTimeFormatterBuilder parseStrict()
Изменяет стиль парсинга на строгий для остальной части форматировщика.
DateTimeFormatter toFormatter()
Завершает этот построитель, создавая DateTimeFormatter с использованием локали по умолчанию.
DateTimeFormatter toFormatter(Locale locale)
Завершает этот построитель, создавая DateTimeFormatter с использованием указанной локали.

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание конструкторов

DateTimeFormatterBuilder

public DateTimeFormatterBuilder()
Создаёт новый экземпляр билдера.

Подробное описание методов

getLocalizedDateTimePattern

public static String getLocalizedDateTimePattern(FormatStyle dateStyle, FormatStyle timeStyle, Chronology chrono, Locale locale)
Возвращает шаблон форматирования даты и времени для определённого региона и хронологии. Регион и хронология используются для поиска локального формата для заданных стилей даты и/или времени.

Если регион содержит расширение "rg" (региональное переопределение) Unicode расширений, шаблон форматирования переопределяется соответствующим шаблоном для региона.

Параметры:
dateStyle - стиль форматирования даты, null для шаблона только времени
timeStyle - стиль форматирования времени, null для шаблона только даты
chrono - хронология, не null
locale - локали, не null
Возвращает:
шаблон форматирования, специфичный для локали и хронологии
Исключения:
IllegalArgumentException - если оба стиля даты и времени null

parseCaseSensitive

public DateTimeFormatterBuilder parseCaseSensitive()
Изменяет стиль разбора на чувствительный к регистру для оставшейся части форматировщика.

Разбор может быть чувствительным или нечувствительным к регистру — по умолчанию он чувствителен к регистру. Этот метод позволяет изменить настройку чувствительности к регистру при разборе.

Вызов этого метода изменяет состояние билдера таким образом, что все последующие вызовы методов билдера будут выполнять разбор текста в режиме чувствительности к регистру. См. parseCaseInsensitive() для противоположной настройки. Методы разбора, чувствительные/нечувствительные к регистру, могут вызываться в любой момент в билдере, таким образом, парсер может многократно переключаться между режимами разбора, чувствительными/нечувствительными к регистру.

Поскольку по умолчанию используется чувствительность к регистру, этот метод следует использовать только после предыдущего вызова #parseCaseInsensitive.

Возвращает:
this, для цепочки вызовов, не null

parseCaseInsensitive

public DateTimeFormatterBuilder parseCaseInsensitive()
Изменяет стиль разбора на нечувствительный к регистру для оставшейся части форматировщика.

Разбор может быть чувствительным или нечувствительным к регистру — по умолчанию он чувствителен к регистру. Этот метод позволяет изменить настройку чувствительности к регистру при разборе.

Вызов этого метода изменяет состояние билдера таким образом, что все последующие вызовы методов билдера будут выполнять разбор текста в режиме нечувствительности к регистру. См. parseCaseSensitive() для противоположной настройки. Методы разбора, чувствительные/нечувствительные к регистру, могут вызываться в любой момент в билдере, таким образом, парсер может многократно переключаться между режимами разбора, чувствительными/нечувствительными к регистру.

Возвращает:
this, для цепочки вызовов, не null

parseStrict

public DateTimeFormatterBuilder parseStrict()
Изменяет стиль разбора на строгий для оставшейся части форматировщика.

Разбор может быть строгим или мягким — по умолчанию он строгий. Это управляет степенью гибкости в соответствии с текстовыми и знаковыми стилями.

При использовании, этот метод изменяет разбор на строгий с этого момента. Так как строгий режим является значением по умолчанию, это обычно необходимо только после вызова parseLenient(). Изменение останется в силе до конца форматировщика, который в конечном итоге будет построен, или до вызова parseLenient.

Возвращает:
this, для цепочки вызовов, не null

parseLenient

public DateTimeFormatterBuilder parseLenient()
Изменяет стиль разбора на мягкий для оставшейся части форматировщика. Обратите внимание, что чувствительность к регистру устанавливается отдельно от этого метода.

Разбор может быть строгим или мягким — по умолчанию он строгий. Это управляет степенью гибкости в соответствии с текстовыми и знаковыми стилями. Приложения, вызывающие этот метод, обычно также должны вызвать parseCaseInsensitive().

При использовании, этот метод изменяет разбор на мягкий с этого момента. Изменение останется в силе до конца форматировщика, который в конечном итоге будет построен, или до вызова parseStrict.

Возвращает:
this, для цепочки вызовов, не null

parseDefaulting

public DateTimeFormatterBuilder parseDefaulting(TemporalField field, long value)
Добавляет значение по умолчанию для поля в форматировщик для использования при разборе.

Это добавляет инструкцию в билдер для вставки значения по умолчанию в результат разбора. Это особенно полезно в сочетании с необязательными частями форматировщика.

Например, рассмотрим форматировщик, который анализирует год, за которым следует необязательный месяц и необязательный день месяца. Использование такого форматировщика потребует от вызывающего кода проверки, была ли проанализирована полная дата, год-месяц или только год. Этот метод может использоваться для установки значения по умолчанию для месяца и дня месяца до разумного значения, например, первого числа месяца, что позволяет вызывающему коду всегда получать дату.

Во время форматирования этот метод не оказывает влияния.

Во время разбора состояние разбора проверяется. Если для указанного поля нет связанного значения, потому что оно не было успешно проанализировано на этом этапе, то указанное значение вставляется в результат разбора. Вставка происходит немедленно, поэтому пара поле-значение будет видна всем последующим элементам в форматировщике. Поэтому этот метод обычно вызывается в конце билдера.

Параметры:
field - поле, для которого нужно задать значение по умолчанию, не null
value - значение по умолчанию для поля
Возвращает:
this, для цепочки вызовов, не null

appendValue

public DateTimeFormatterBuilder appendValue(TemporalField field)
Добавляет значение поля даты и времени в форматировщик с использованием обычного стиля вывода.

Значение поля будет выведено при форматировании. Если значение получить невозможно, будет выброшено исключение.

Значение будет выведено как обычное целое значение. Только отрицательные числа будут иметь знак. Не будет добавлено заполнения.

Парсер переменной ширины, такой как этот, обычно действует жадно, требуя одной цифры, но принимая как можно больше цифр. Это поведение может быть изменено "прилегающим разбором значений". См. appendValue(java.time.temporal.TemporalField, int) для подробной информации.

Параметры:
field - поле для добавления, не null
Возвращает:
this, для цепочки вызовов, не null

appendValue

public DateTimeFormatterBuilder appendValue(TemporalField field, int width)
Добавляет значение поля даты и времени в форматировщик с использованием фиксированной ширины и нулевого заполнения.

Значение поля будет выведено при форматировании. Если значение получить невозможно, будет выброшено исключение.

Значение будет дополнено слева нулями. Если размер значения означает, что его нельзя вывести в указанной ширине, то выброшено исключение. Если значение поля отрицательно, то при форматировании выброшено исключение.

Этот метод поддерживает специальную технику разбора, известную как "прилегающий разбор значений". Эта техника решает проблему, когда за значением, переменной или фиксированной ширины следуют одно или несколько значений фиксированной длины. Стандартный парсер жадный, и поэтому он обычно "крадёт" цифры, которые необходимы парсерам значений фиксированной ширины, которые следуют за значением переменной ширины.

Для инициализации "прилегающего разбора значений" ничего не требуется. При вызове appendValue билдер переходит в режим настройки прилегающего разбора значений. Если вызов этого или последующие вызовы методов на том же билдере относятся к значениям фиксированной ширины, то парсер зарезервирует место для разбора значений фиксированной ширины.

Например, рассмотрим builder.appendValue(YEAR).appendValue(MONTH_OF_YEAR, 2); Год - это разбор переменной ширины от 1 до 19 цифр. Месяц - это разбор фиксированной ширины из 2 цифр. Поскольку они были добавлены в один и тот же билдер сразу же после друг друга, парсер года зарезервирует две цифры для разбора месяца. Таким образом, текст '201106' будет правильно разбит на год 2011 и месяц 6. Без прилегающего разбора значений год бы жадно проанализировал все шесть цифр и ничего бы не оставил для месяца.

Прилегающий разбор значений применяется к каждой группе значений фиксированной ширины и без знака, которые сразу следуют за значением переменной или фиксированной ширины. Вызов любого другого метода добавления завершит настройку прилегающего разбора значений. Таким образом, в маловероятном случае, если вам нужно избежать поведения прилегающего разбора значений, просто добавьте appendValue к другому DateTimeFormatterBuilder и добавьте его в этот билдер.

Если активен прилегающий разбор, то разбор должен точно соответствовать указанному количеству цифр как в строгом, так и в мягком режимах. Кроме того, не допускается знак плюс или минус.

Параметры:
field - поле для добавления, не null
width - ширина выводимого поля, от 1 до 19
Возвращает:
this, для цепочки вызовов, не null
Исключения:
IllegalArgumentException - если ширина недопустима

appendValue

public DateTimeFormatterBuilder appendValue(TemporalField field, int minWidth, int maxWidth, SignStyle signStyle)
Добавляет значение поля даты и времени в форматировщик, предоставляя полный контроль над форматированием.

Значение поля будет выведено во время форматирования. Если значение получить невозможно, будет выброшено исключение.

Этот метод предоставляет полный контроль над числовым форматированием, включая нулевое заполнение и знак положительного/отрицательного числа.

Парсер для значения с переменной длиной, такого как это, обычно ведёт себя жадно, принимая как можно больше цифр. Это поведение может быть изменено «смежными парсерами значений». Подробности см. в appendValue(java.time.temporal.TemporalField, int).

В режиме строгого парсинга минимальное количество парсируемых цифр составляет minWidth, а максимальное — maxWidth. В режиме мягкого парсинга минимальное количество парсируемых цифр равно одной, а максимальное — 19 (за исключением ограничений, накладываемых смежными парсерами значений).

Если этот метод вызывается с равными минимальной и максимальной шириной и стилем знака NOT_NEGATIVE, то он делегирует вызов appendValue(TemporalField,int). В этом случае происходит форматирование и поведение парсинга, описанное там.

Parameters:
field - поле для добавления, не null
minWidth - минимальная ширина поля выводимого значения, от 1 до 19
maxWidth - максимальная ширина поля выводимого значения, от 1 до 19
signStyle - стиль вывода знака положительного/отрицательного числа, не null
Returns:
this, для цепочки вызовов, не null
Throws:
IllegalArgumentException - если ширины некорректны

appendValueReduced

public DateTimeFormatterBuilder appendValueReduced(TemporalField field, int width, int maxWidth, int baseValue)
Добавляет усечённое значение поля даты и времени в форматировщик.

Поскольку поля, такие как год, различаются в зависимости от календаря, рекомендуется использовать вариант метода appendValueReduced(TemporalField, int, int, ChronoLocalDate) в большинстве случаев. Этот вариант подходит для простых полей или работы только с календарём ISO.

При форматировании width и maxWidth используются для определения количества символов для форматирования. Если они равны, форматирование имеет фиксированную ширину. Если значение поля находится в пределах диапазона baseValue используя width символов, то усеченное значение форматируется, в противном случае значение усекается для соответствия maxWidth. Самые правые символы выводятся для соответствия ширине, при этом слева добавляются нули.

При строгом парсинге анализируется количество символов, разрешенное width до maxWidth. При мягком парсинге количество символов должно быть не меньше 1 и меньше 10. Если количество проанализированных цифр равно width и значение положительное, значение поля вычисляется как первое число, большее или равное baseValue с теми же младшими разрядами, в противном случае проанализированное значение является значением поля. Это позволяет ввести усеченное значение для значений в диапазоне baseValue и width, и абсолютные значения для значений вне этого диапазона.

Например, для base value 1980 и width 2 допустимые значения находятся в диапазоне от 1980 до 2079. При парсинге текста "12" результатом будет значение 2012, поскольку это значение в диапазоне, где последние две цифры «12». В отличие от этого, при парсинге текста "1915" результатом будет значение 1915.

Parameters:
field - поле для добавления, не null
width - ширина поля выводимого и анализируемого значения, от 1 до 10
maxWidth - максимальная ширина выводимого значения, от 1 до 10
baseValue - базовое значение диапазона допустимых значений
Returns:
this, для цепочки вызовов, не null
Throws:
IllegalArgumentException - если ширина или базовое значение некорректны

appendValueReduced

public DateTimeFormatterBuilder appendValueReduced(TemporalField field, int width, int maxWidth, ChronoLocalDate baseDate)
Добавляет усечённое значение поля даты и времени в форматировщик.

Обычно используется для форматирования и парсинга двузначного года.

Базовая дата используется для расчёта полного значения при парсинге. Например, если базовой датой является 1950-01-01, то анализируемые значения для двузначного года будут в диапазоне от 1950-01-01 до 2049-12-31. Только год будет извлечён из даты, таким образом, базовая дата 1950-08-25 также даст диапазон от 1950-01-01 до 2049-12-31. Это поведение необходимо для поддержки полей, таких как неделя-год или других календарей, где анализируемое значение не совпадает со стандартным годом ISO.

Точное поведение следующее. Проанализируйте полные поля и определите эффективный календарь, используя последний календарь, если он появляется более одного раза. Затем преобразуйте базовую дату в эффективный календарь. Затем извлеките указанное поле из специфичной для календаря базовой даты и используйте его для определения baseValue для последующих вычислений.

При форматировании width и maxWidth используются для определения количества символов для форматирования. Если они равны, форматирование имеет фиксированную ширину. Если значение поля находится в пределах диапазона baseValue используя width символов, то усеченное значение форматируется, в противном случае значение усекается для соответствия maxWidth. Самые правые символы выводятся для соответствия ширине, при этом слева добавляются нули.

При строгом парсинге анализируется количество символов, разрешенное width до maxWidth. При мягком парсинге количество символов должно быть не меньше 1 и меньше 10. Если количество проанализированных цифр равно width и значение положительное, значение поля вычисляется как первое число, большее или равное baseValue с теми же младшими разрядами, в противном случае проанализированное значение является значением поля. Это позволяет ввести усеченное значение для значений в диапазоне baseValue и width, и абсолютные значения для значений вне этого диапазона.

Например, для base value 1980 и width 2 допустимые значения находятся в диапазоне от 1980 до 2079. При парсинге текста "12" результатом будет значение 2012, поскольку это значение в диапазоне, где последние две цифры «12». В отличие от этого, при парсинге текста "1915" результатом будет значение 1915.

Parameters:
field - поле для добавления, не null
width - ширина поля выводимого и анализируемого значения, от 1 до 10
maxWidth - максимальная ширина выводимого значения, от 1 до 10
baseDate - базовая дата, используемая для расчёта базового значения диапазона допустимых значений в анализируемом календаре, не null
Returns:
this, для цепочки вызовов, не null
Throws:
IllegalArgumentException - если ширина или базовое значение некорректны

appendFraction

public DateTimeFormatterBuilder appendFraction(TemporalField field, int minWidth, int maxWidth, boolean decimalPoint)
Добавляет дробную часть значения поля даты и времени в форматировщик.

Дробная часть значения поля будет выведена, включая предшествующую десятичную точку. Предшествующее значение не выводится. Например, значение секунды минуты 15 будет выведено как .25.

Ширина выводимой дробной части может контролироваться. Установка минимальной ширины в ноль не выведет значение. Выводимая дробная часть будет иметь минимальную ширину между минимальной и максимальной ширинами - хвостовые нули опускаются. Округление не производится из-за максимальной ширины - цифры просто отбрасываются.

При строгом парсинге количество проанализированных цифр должно быть между минимальной и максимальной шириной. В строгом режиме, если минимальная и максимальная ширины равны, и нет десятичной точки, то парсер будет участвовать в парсинге смежных значений, см. appendValue(java.time.temporal.TemporalField, int). При мягком парсинге минимальная ширина считается нулём, а максимальная — девятью.

Если значение получить невозможно, будет выброшено исключение. Если значение отрицательное, будет выброшено исключение. Если поле не имеет фиксированного набора допустимых значений, будет выброшено исключение. Если значение поля в дате и времени для вывода некорректно, оно не может быть выведено, и будет выброшено исключение.

Parameters:
field - поле для добавления, не null
minWidth - минимальная ширина поля, исключая десятичную точку, от 0 до 9
maxWidth - максимальная ширина поля, исключая десятичную точку, от 1 до 9
decimalPoint - выводить ли локальный символ десятичной точки
Returns:
this, для цепочки вызовов, не null
Throws:
IllegalArgumentException - если поле имеет переменный набор допустимых значений или ширина некорректна

appendText

public DateTimeFormatterBuilder appendText(TemporalField field)
Добавляет текст поля даты и времени в форматировщик, используя полный текстовый стиль.

Текст поля будет выведен во время форматирования. Значение должно быть в пределах допустимого диапазона поля. Если значение получить невозможно, будет выброшено исключение. Если поле не имеет текстового представления, будет использовано числовое значение.

Значение будет выведено в соответствии с обычным форматом целого числа. Только отрицательные числа будут иметь знак. Отступы не будут добавлены.

Parameters:
field - поле для добавления, не null
Returns:
this, для цепочки вызовов, не null

appendText

public DateTimeFormatterBuilder appendText(TemporalField field, TextStyle textStyle)
Добавляет текст поля даты и времени в форматировщик.

Текст поля будет выведен во время форматирования. Значение должно быть в допустимом диапазоне поля. Если значение получить невозможно, будет выброшено исключение. Если поле не имеет текстового представления, то будет использовано числовое значение.

Значение будет напечатано в соответствии со стандартным форматом целого числа. Только отрицательные числа будут иметь знак. Не будет добавлено заполнения.

Parameters:
field - поле для добавления, не null
textStyle - стиль текста для использования, не null
Returns:
this, для цепочки, не null

appendText

public DateTimeFormatterBuilder appendText(TemporalField field, Map<Long,String> textLookup)
Добавляет текст поля даты и времени в форматировщик, используя указанную карту для предоставления текста.

Стандартные методы вывода текста используют локализованный текст в JDK. Этот метод позволяет указать этот текст напрямую. Предоставленная карта не валидируется сборщиком, чтобы убедиться, что форматирование или разбор возможны, поэтому некорректная карта может вызвать ошибку при последующем использовании.

Предоставление карты текста обеспечивает значительную гибкость в форматировании и разборе. Например, устаревшее приложение может потребовать или предоставить месяцы года как "JNY", "FBY", "MCH" и т. д. Они не соответствуют стандартному набору текста для локализованных названий месяцев. Используя этот метод, можно создать карту, которая определяет связь между каждым значением и текстом:

 Map<Long, String> map = new HashMap<>();
 map.put(1L, "JNY");
 map.put(2L, "FBY");
 map.put(3L, "MCH");
 ...
 builder.appendText(MONTH_OF_YEAR, map);
 

Другие использования могут заключаться в выводе значения с суффиксом, например, "1-е", "2-е", "3-е" или в виде римских цифр "I", "II", "III", "IV".

Во время форматирования значение извлекается и проверяется на соответствие допустимому диапазону. Если текст недоступен для значения, оно выводится как число. Во время разбора анализатор будет сопоставлять текст и числовые значения с картой.

Parameters:
field - поле для добавления, не null
textLookup - карта из значения в текст
Returns:
this, для цепочки, не null

appendInstant

public DateTimeFormatterBuilder appendInstant()
Добавляет мгновение времени с использованием ISO-8601 в форматировщик, форматируя дробные цифры группами по три.

Мгновения времени имеют фиксированный формат вывода. Они преобразуются в дату и время с часовым поясом UTC и форматируются с использованием стандартного формата ISO-8601. С помощью этого метода форматирование наносекунд выводит нули, три, шесть или девять цифр по мере необходимости. Локализованный десятичный стиль не используется.

Мгновение времени извлекается с помощью INSTANT_SECONDS и необязательно NANO_OF_SECOND. Значение INSTANT_SECONDS может быть вне максимального диапазона LocalDateTime.

Стиль разрешения не влияет на разбор мгновений времени. Время конца дня '24:00' обрабатывается как полночь в начале следующего дня. Время високосности '23:59:59' обрабатывается в некоторой степени, см. DateTimeFormatter.parsedLeapSecond() для получения полной информации.

При форматировании мгновение времени всегда будет суффикс 'Z', чтобы указать UTC. При разборе поведение appendOffsetId() будет использоваться для разбора смещения, при необходимости преобразуя мгновение времени в UTC.

Альтернативой этому методу является форматирование/разбор мгновения времени как единого значения эпохи-секунд. Это достигается с помощью appendValue(INSTANT_SECONDS).

Returns:
this, для цепочки, не null

appendInstant

public DateTimeFormatterBuilder appendInstant(int fractionalDigits)
Добавляет мгновение времени с использованием ISO-8601 в форматировщик с управлением количеством дробных цифр.

Мгновения времени имеют фиксированный формат вывода, хотя этот метод предоставляет некоторый контроль над дробными цифрами. Они преобразуются в дату и время с часовым поясом UTC и выводятся в стандартном формате ISO-8601. Локализованный десятичный стиль не используется.

Параметр fractionalDigits позволяет управлять выводом дробных секунд. Указание нуля приведет к отсутствию дробных цифр в выводе. От 1 до 9 будет выводиться возрастающее количество цифр, используя нулевое правое заполнение при необходимости. Специальное значение -1 используется для вывода необходимого количества цифр, чтобы избежать завершающих нулей.

При разборе в строгом режиме количество разборных цифр должно совпадать с дробными цифрами. При разборе в мягком режиме принимается любое количество дробных цифр от нуля до девяти.

Мгновение времени извлекается с помощью INSTANT_SECONDS и необязательно NANO_OF_SECOND. Значение INSTANT_SECONDS может быть вне максимального диапазона LocalDateTime.

Стиль разрешения не влияет на разбор мгновений времени. Время конца дня '24:00' обрабатывается как полночь в начале следующего дня. Время високосности '23:59:60' обрабатывается в некоторой степени, см. DateTimeFormatter.parsedLeapSecond() для получения полной информации.

Альтернативой этому методу является форматирование/разбор мгновения времени как единого значения эпохи-секунд. Это достигается с помощью appendValue(INSTANT_SECONDS).

Parameters:
fractionalDigits - количество дробных цифр секунды для форматирования от 0 до 9 или -1 для использования необходимого количества цифр
Returns:
this, для цепочки, не null
Throws:
IllegalArgumentException - если количество дробных цифр недействительно

appendOffsetId

public DateTimeFormatterBuilder appendOffsetId()
Добавляет смещение часового пояса, например '+01:00', в форматировщик.

Это добавляет инструкцию для форматирования/разбора идентификатора смещения в сборщик. Это эквивалентно вызову appendOffset("+HH:mm:ss", "Z"). См. appendOffset(String, String) для получения подробностей о форматировании и разборе.

Returns:
this, для цепочки, не null

appendOffset

public DateTimeFormatterBuilder appendOffset(String pattern, String noOffsetText)
Добавляет смещение часового пояса, например '+01:00', в форматировщик.

Это добавляет инструкцию для форматирования/разбора идентификатора смещения в сборщик.

Во время форматирования смещение извлекается с помощью механизма, эквивалентного запросу временной шкалы с помощью TemporalQueries.offset(). Оно будет напечатано в формате, определенном ниже. Если смещение невозможно получить, выбрасывается исключение, если раздел форматировщика необязателен.

При разборе в строгом режиме входные данные должны содержать обязательные и необязательные элементы, определенные указанным шаблоном. Если смещение невозможно разобрать, выбрасывается исключение, если раздел форматировщика необязателен.

При разборе в мягком режиме обязательны только часы - минуты и секунды необязательны. Двоеточия обязательны, если указанный шаблон содержит двоеточие. Если указанный шаблон равен "+HH", наличие двоеточий определяется тем, является ли символ после цифр часов двоеточием или нет. Если смещение невозможно разобрать, выбрасывается исключение, если раздел форматировщика необязателен.

Формат смещения контролируется шаблоном, который должен быть одним из следующих:

  • +HH - только час, игнорируя минуты и секунды
  • +HHmm - час, с минутами, если они не нулевые, игнорируя секунды, без двоеточия
  • +HH:mm - час, с минутами, если они не нулевые, игнорируя секунды, с двоеточием
  • +HHMM - час и минуты, игнорируя секунды, без двоеточия
  • +HH:MM - час и минуты, игнорируя секунды, с двоеточием
  • +HHMMss - час и минуты, с секундами, если они не нулевые, без двоеточия
  • +HH:MM:ss - час и минуты, с секундами, если они не нулевые, с двоеточием
  • +HHMMSS - час, минуты и секунды, без двоеточия
  • +HH:MM:SS - час, минуты и секунды, с двоеточием
  • +HHmmss - час, с минутами, если они не нулевые, или с минутами и секундами, если они не нулевые, без двоеточия
  • +HH:mm:ss - час, с минутами, если они не нулевые, или с минутами и секундами, если они не нулевые, с двоеточием
  • +H - только час, игнорируя минуты и секунды
  • +Hmm - час, с минутами, если они не нулевые, игнорируя секунды, без двоеточия
  • +H:mm - час, с минутами, если они не нулевые, игнорируя секунды, с двоеточием
  • +HMM - час и минуты, игнорируя секунды, без двоеточия
  • +H:MM - час и минуты, игнорируя секунды, с двоеточием
  • +HMMss - час и минуты, с секундами, если они не нулевые, без двоеточия
  • +H:MM:ss - час и минуты, с секундами, если они не нулевые, с двоеточием
  • +HMMSS - час, минуты и секунды, без двоеточия
  • +H:MM:SS - час, минуты и секунды, с двоеточием
  • +Hmmss - час, с минутами, если они не нулевые, или с минутами и секундами, если они не нулевые, без двоеточия
  • +H:mm:ss - час, с минутами, если они не нулевые, или с минутами и секундами, если они не нулевые, с двоеточием
Шаблоны, содержащие "HH", форматируют и анализируют двухзначный час, заполняя нулями слева, если необходимо. Шаблоны, содержащие "H", форматируют без заполнения нулями, и анализируют одну или две цифры. В мягком режиме анализатор будет жадным и анализировать максимальное возможное количество цифр. Текст "без смещения" контролирует вывод текста, когда общее количество полей смещения, подлежащих выводу, равно нулю. Примеры значений: 'Z', '+00:00', 'UTC' или 'GMT'. Три формата принимаются для разбора UTC - текст "без смещения" и плюс и минус версии нуля, определенные шаблоном.
Parameters:
pattern - используемый шаблон, не null
noOffsetText - текст для использования, когда смещение равно нулю, не null
Returns:
this, для цепочки, не null
Throws:
IllegalArgumentException - если шаблон недействителен

appendLocalizedOffset

public DateTimeFormatterBuilder appendLocalizedOffset(TextStyle style)
Добавляет локально форматированный смещение часового пояса, например, 'GMT+01:00', к форматеру.

Это добавляет локально форматированное смещение часового пояса к билдеру, формат локального смещения контролируется указанным style в этом методе:

  • full - форматирование с локальным текстом смещения, например, 'GMT, двухзначное значение часа и минуты, необязательное поле секунды, если оно не равно нулю, и двоеточие.
  • short - форматирование с локальным текстом смещения, например, 'GMT, час без ведущего нуля, необязательные двухзначные минуты и секунды, если они не равны нулю, и двоеточие.

Во время форматирования смещение извлекается с помощью механизма, эквивалентного запросу к временной точке с помощью TemporalQueries.offset(). Если смещение получить невозможно, то генерируется исключение, если соответствующий раздел форматера не является необязательным.

Во время разбора смещение анализируется с использованием указанного выше формата. Если смещение невозможно разобрать, то генерируется исключение, если соответствующий раздел форматера не является необязательным.

Parameters:
style - стиль форматирования, не null
Returns:
this, для цепочки вызовов, не null
Throws:
IllegalArgumentException - если стиль не full и не short

appendZoneId

public DateTimeFormatterBuilder appendZoneId()
Добавляет идентификатор часового пояса, например, 'Europe/Paris' или '+02:00', к форматеру.

Это добавляет инструкцию для форматирования/разбора идентификатора часового пояса к билдеру. Идентификатор часового пояса извлекается строго, подходящим для ZonedDateTime. В отличие от OffsetDateTime, у которого нет подходящего идентификатора часового пояса для использования с этим методом, см. appendZoneOrOffsetId().

Во время форматирования часовой пояс извлекается с помощью механизма, эквивалентного запросу к временной точке с помощью TemporalQueries.zoneId(). Он будет напечатан с помощью результата ZoneId.getId(). Если часовой пояс получить невозможно, то генерируется исключение, если соответствующий раздел форматера не является необязательным.

Во время разбора текст должен соответствовать известному часовому поясу или смещению. Существует два типа идентификаторов часового пояса: основанные на смещении, например, '+01:30', и основанные на регионе, например, 'Europe/London'. Они анализируются по-разному. Если разбор начинается с '+', '-', 'UT', 'UTC' или 'GMT', то парсер ожидает часовой пояс, основанный на смещении, и не будет соответствовать часовым поясам, основанным на регионе. Идентификатор смещения, например, '+02:30', может находиться в начале разбора или предваряться 'UT', 'UTC' или 'GMT'. Разбор идентификатора смещения эквивалентен использованию appendOffset(String, String) с аргументами 'HH:MM:ss' и строкой смещения по умолчанию '0'. Если разбор начинается с 'UT', 'UTC' или 'GMT', и парсер не может найти соответствующий идентификатор смещения, то выбирается ZoneOffset.UTC. Во всех остальных случаях используется список известных часовых поясов, основанных на регионе, чтобы найти наибольшее совпадение. Если совпадение не найдено, и разбор начинается с 'Z', то выбирается ZoneOffset.UTC. Парсер использует настройку чувствительность к регистру.

Например, следующие строки будут обработаны:

   "Europe/London"           -- ZoneId.of("Europe/London")
   "Z"                       -- ZoneOffset.UTC
   "UT"                      -- ZoneId.of("UT")
   "UTC"                     -- ZoneId.of("UTC")
   "GMT"                     -- ZoneId.of("GMT")
   "+01:30"                  -- ZoneOffset.of("+01:30")
   "UT+01:30"                -- ZoneOffset.of("+01:30")
   "UTC+01:30"               -- ZoneOffset.of("+01:30")
   "GMT+01:30"               -- ZoneOffset.of("+01:30")
 
Returns:
this, для цепочки вызовов, не null
See Also:
  • appendZoneRegionId()

appendZoneRegionId

public DateTimeFormatterBuilder appendZoneRegionId()
Добавляет идентификатор часового пояса региона, например, 'Europe/Paris', к форматеру, отбрасывая идентификатор часового пояса, если он является ZoneOffset.

Это добавляет инструкцию для форматирования/разбора идентификатора часового пояса к билдеру только если это идентификатор, основанный на регионе.

Во время форматирования часовой пояс извлекается с помощью механизма, эквивалентного запросу к временной точке с помощью TemporalQueries.zoneId(). Если часовой пояс является ZoneOffset или его получить невозможно, то генерируется исключение, если соответствующий раздел форматера не является необязательным. Если часовой пояс не является смещением, то часовой пояс будет напечатан с использованием идентификатора часового пояса из ZoneId.getId().

Во время разбора текст должен соответствовать известному часовому поясу или смещению. Существует два типа идентификаторов часового пояса: основанные на смещении, например, '+01:30', и основанные на регионе, например, 'Europe/London'. Они анализируются по-разному. Если разбор начинается с '+', '-', 'UT', 'UTC' или 'GMT', то парсер ожидает часовой пояс, основанный на смещении, и не будет соответствовать часовым поясам, основанным на регионе. Идентификатор смещения, например, '+02:30', может находиться в начале разбора или предваряться 'UT', 'UTC' или 'GMT'. Разбор идентификатора смещения эквивалентен использованию appendOffset(String, String) с аргументами 'HH:MM:ss' и строкой смещения по умолчанию '0'. Если разбор начинается с 'UT', 'UTC' или 'GMT', и парсер не может найти соответствующий идентификатор смещения, то выбирается ZoneOffset.UTC. Во всех остальных случаях используется список известных часовых поясов, основанных на регионе, чтобы найти наибольшее совпадение. Если совпадение не найдено, и разбор начинается с 'Z', то выбирается ZoneOffset.UTC. Парсер использует настройку чувствительность к регистру.

Например, следующие строки будут обработаны:

   "Europe/London"           -- ZoneId.of("Europe/London")
   "Z"                       -- ZoneOffset.UTC
   "UT"                      -- ZoneId.of("UT")
   "UTC"                     -- ZoneId.of("UTC")
   "GMT"                     -- ZoneId.of("GMT")
   "+01:30"                  -- ZoneOffset.of("+01:30")
   "UT+01:30"                -- ZoneOffset.of("+01:30")
   "UTC+01:30"               -- ZoneOffset.of("+01:30")
   "GMT+01:30"               -- ZoneOffset.of("+01:30")
 

Обратите внимание, что этот метод идентичен appendZoneId() за исключением механизма получения часового пояса. Также обратите внимание, что разбор принимает смещения, тогда как форматирование никогда не будет генерировать их.

Returns:
this, для цепочки вызовов, не null
See Also:
  • appendZoneId()

appendZoneOrOffsetId

public DateTimeFormatterBuilder appendZoneOrOffsetId()
Добавляет идентификатор часового пояса, например, 'Europe/Paris' или '+02:00', к форматеру, используя лучший доступный идентификатор часового пояса.

Это добавляет инструкцию для форматирования/разбора наилучшего доступного идентификатора часового пояса или смещения к билдеру. Идентификатор часового пояса извлекается мягко: сначала пытается найти настоящий идентификатор часового пояса, например, в ZonedDateTime, а затем пытается найти смещение, например, в OffsetDateTime.

Во время форматирования часовой пояс извлекается с помощью механизма, эквивалентного запросу к временной точке с помощью TemporalQueries.zone(). Он будет напечатан с помощью результата ZoneId.getId(). Если часовой пояс получить невозможно, то генерируется исключение, если соответствующий раздел форматера не является необязательным.

Во время разбора текст должен соответствовать известному часовому поясу или смещению. Существует два типа идентификаторов часового пояса: основанные на смещении, например, '+01:30', и основанные на регионе, например, 'Europe/London'. Они анализируются по-разному. Если разбор начинается с '+', '-', 'UT', 'UTC' или 'GMT', то парсер ожидает часовой пояс, основанный на смещении, и не будет соответствовать часовым поясам, основанным на регионе. Идентификатор смещения, например, '+02:30', может находиться в начале разбора или предваряться 'UT', 'UTC' или 'GMT'. Разбор идентификатора смещения эквивалентен использованию appendOffset(String, String) с аргументами 'HH:MM:ss' и строкой смещения по умолчанию '0'. Если разбор начинается с 'UT', 'UTC' или 'GMT', и парсер не может найти соответствующий идентификатор смещения, то выбирается ZoneOffset.UTC. Во всех остальных случаях используется список известных часовых поясов, основанных на регионе, чтобы найти наибольшее совпадение. Если совпадение не найдено, и разбор начинается с 'Z', то выбирается ZoneOffset.UTC. Парсер использует настройку чувствительность к регистру.

Например, следующие строки будут обработаны:

   "Europe/London"           -- ZoneId.of("Europe/London")
   "Z"                       -- ZoneOffset.UTC
   "UT"                      -- ZoneId.of("UT")
   "UTC"                     -- ZoneId.of("UTC")
   "GMT"                     -- ZoneId.of("GMT")
   "+01:30"                  -- ZoneOffset.of("+01:30")
   "UT+01:30"                -- ZoneOffset.of("UT+01:30")
   "UTC+01:30"               -- ZoneOffset.of("UTC+01:30")
   "GMT+01:30"               -- ZoneOffset.of("GMT+01:30")
 

Обратите внимание, что этот метод идентичен appendZoneId() за исключением механизма получения часового пояса.

Returns:
this, для цепочки вызовов, не null
See Also:
  • appendZoneId()

appendZoneText

public DateTimeFormatterBuilder appendZoneText(TextStyle textStyle)
Добавляет имя часового пояса, например, 'British Summer Time', к форматеру.

Это добавляет инструкцию для форматирования/разбора текстового имени часового пояса к билдеру.

Во время форматирования часовой пояс извлекается с помощью механизма, эквивалентного запросу к временной точке с помощью TemporalQueries.zoneId(). Если часовой пояс является ZoneOffset он будет напечатан с использованием результата ZoneOffset.getId(). Если часовой пояс не является смещением, то текстовое имя будет найдено для локали, установленной в DateTimeFormatter. Если временный объект, который печатается, представляет мгновение времени или является локальной датой и временем, которое не находится в промежутке или перекрытии летнего времени, то текст будет соответствующим летним или зимним временем. Если поиск текста не дал результатов, то будет напечатан идентификатор часового пояса из ID. Если часовой пояс получить невозможно, то генерируется исключение, если соответствующий раздел форматера не является необязательным.

Во время разбора принимается текстовое имя часового пояса, идентификатор часового пояса или смещение. Многие текстовые имена часовых поясов не уникальны, например, CST может относиться как к "Central Standard Time", так и к "China Standard Time". В такой ситуации идентификатор часового пояса будет определяться информацией о регионе из locale форматера и стандартным идентификатором часового пояса для данного региона, например, America/New_York для зоны Восточного времени Америки. Метод appendZoneText(TextStyle, Set) может быть использован для указания набора предпочтительных ZoneId в такой ситуации.

Parameters:
textStyle - стиль текста, не null
Returns:
this, для цепочки вызовов, не null

appendZoneText

public DateTimeFormatterBuilder appendZoneText(TextStyle textStyle, Set<ZoneId> preferredZones)
Добавляет имя часового пояса, например, 'British Summer Time', в форматировщик.

Это добавляет инструкцию по форматированию/разбору текстового имени зоны в билдер.

Во время форматирования зона извлекается с помощью механизма, эквивалентного запросу временной точки с помощью TemporalQueries.zoneId(). Если зона является ZoneOffset, она будет выведена с использованием результата ZoneOffset.getId(). Если зона не является смещением, текстовое имя будет найдено для локали, установленной в DateTimeFormatter. Если временный объект, который выводится, представляет собой мгновение или если это локальное время, которое не находится в промежутке или перекрытии летнего времени, то текст будет соответствующим текстом летнего или зимнего времени. Если поиск текста не найдёт подходящего результата, то будет выведено ID. Если зона не может быть получена, то будет выброшено исключение, если раздел форматировщика не является необязательным.

Во время разбора принимается либо текстовое имя зоны, либо идентификатор зоны, либо смещение. Многие текстовые имена зон не уникальны, например, CST может означать как "Центральное стандартное время", так и "Китайское стандартное время". В такой ситуации идентификатор зоны определяется региональной информацией из locale форматировщика и стандартным идентификатором зоны для этой области, например, America/New_York для зоны Восточного времени Америки. Этот метод также позволяет указать набор предпочтительных ZoneId для разбора. Соответствующий предпочтительный идентификатор зоны будет использован, если текстовое имя зоны, которое анализируется, не является уникальным.

Если зона не может быть обработана, то будет выброшено исключение, если раздел форматировщика не является необязательным.

Parameters:
textStyle - стиль текста для использования, не null
preferredZones - набор предпочтительных идентификаторов зон, не null
Returns:
this, для цепочки вызовов, не null

appendGenericZoneText

public DateTimeFormatterBuilder appendGenericZoneText(TextStyle textStyle)
Добавляет общее имя часового пояса, например, 'Pacific Time', в форматировщик.

Это добавляет инструкцию по форматированию/разбору общего текстового имени зоны в билдер. Общее имя одинаково на протяжении всего года, игнорируя любые изменения летнего времени. Например, 'Pacific Time' - это общее имя, в то время как 'Pacific Standard Time' и 'Pacific Daylight Time' - это конкретные имена, см. appendZoneText(TextStyle).

Во время форматирования зона извлекается с помощью механизма, эквивалентного запросу временной точки с помощью TemporalQueries.zoneId(). Если зона является ZoneOffset, она будет выведена с использованием результата ZoneOffset.getId(). Если зона не является смещением, текстовое имя будет найдено для локали, установленной в DateTimeFormatter. Если поиск текста не найдёт подходящего результата, то будет выведено ID. Если зона не может быть получена, то будет выброшено исключение, если раздел форматировщика не является необязательным.

Во время разбора принимается либо текстовое имя зоны, либо идентификатор зоны, либо смещение. Многие текстовые имена зон не уникальны, например, CST может означать как "Центральное стандартное время", так и "Китайское стандартное время". В такой ситуации идентификатор зоны определяется региональной информацией из locale форматировщика и стандартным идентификатором зоны для этой области, например, America/New_York для зоны Восточного времени Америки. Метод appendGenericZoneText(TextStyle, Set) может быть использован для указания набора предпочтительных ZoneId в этой ситуации.

Parameters:
textStyle - стиль текста для использования, не null
Returns:
this, для цепочки вызовов, не null
Since:
9

appendGenericZoneText

public DateTimeFormatterBuilder appendGenericZoneText(TextStyle textStyle, Set<ZoneId> preferredZones)
Добавляет общее имя часового пояса, например, 'Pacific Time', в форматировщик.

Это добавляет инструкцию по форматированию/разбору общего текстового имени зоны в билдер. Общее имя одинаково на протяжении всего года, игнорируя любые изменения летнего времени. Например, 'Pacific Time' - это общее имя, в то время как 'Pacific Standard Time' и 'Pacific Daylight Time' - это конкретные имена, см. appendZoneText(TextStyle).

Этот метод также позволяет указать набор предпочтительных ZoneId для разбора. Соответствующий предпочтительный идентификатор зоны будет использован, если текстовое имя зоны, которое анализируется, не является уникальным.

См. appendGenericZoneText(TextStyle) для подробностей о форматировании и разборе.

Parameters:
textStyle - стиль текста для использования, не null
preferredZones - набор предпочтительных идентификаторов зон, не null
Returns:
this, для цепочки вызовов, не null
Since:
9

appendChronologyId

public DateTimeFormatterBuilder appendChronologyId()
Добавляет идентификатор хронологии, например, 'ISO' или 'ThaiBuddhist', в форматировщик.

Это добавляет инструкцию по форматированию/разбору идентификатора хронологии в билдер.

Во время форматирования хронология извлекается с помощью механизма, эквивалентного запросу временной точки с помощью TemporalQueries.chronology(). Она будет выведена с использованием результата Chronology.getId(). Если хронология не может быть получена, то будет выброшено исключение, если раздел форматировщика не является необязательным.

Во время разбора хронология разбирается и должна соответствовать одной из хронологий в Chronology.getAvailableChronologies(). Если хронология не может быть обработана, то будет выброшено исключение, если раздел форматировщика не является необязательным. Парсер использует настройку чувствительность к регистру.

Returns:
this, для цепочки вызовов, не null

appendChronologyText

public DateTimeFormatterBuilder appendChronologyText(TextStyle textStyle)
Добавляет имя хронологии в форматировщик.

Имя системы календаря будет выведено во время форматирования. Если хронология не может быть получена, будет выброшено исключение.

Parameters:
textStyle - стиль текста для использования, не null
Returns:
this, для цепочки вызовов, не null

appendLocalized

public DateTimeFormatterBuilder appendLocalized(FormatStyle dateStyle, FormatStyle timeStyle)
Добавляет локализованный шаблон даты и времени в форматировщик.

Это добавляет локализованный раздел в билдер, подходящий для вывода даты, времени или комбинации даты и времени. Формат локализованного раздела ищется в зависимости от четырёх пунктов:

  • стиль dateStyle указанный в этом методе
  • стиль timeStyle указанный в этом методе
  • стиль Locale DateTimeFormatter
  • Chronology, выбирая лучший вариант
Во время форматирования хронология извлекается из временного объекта, который форматируется, который может быть изменён с помощью DateTimeFormatter.withChronology(Chronology). Стили FULL и LONG обычно требуют часового пояса. При форматировании с использованием этих стилей должен быть доступен ZoneId через ZonedDateTime или DateTimeFormatter.withZone(java.time.ZoneId).

Во время разбора, если хронология уже была обработана, то она используется. В противном случае используется значение по умолчанию из DateTimeFormatter.withChronology(Chronology) со значением IsoChronology в качестве резервного варианта.

Обратите внимание, что этот метод предоставляет функциональность, аналогичную методам DateFormat , например, DateFormat.getDateTimeInstance(int, int).

Parameters:
dateStyle - стиль даты для использования, null означает, что дата не требуется
timeStyle - стиль времени для использования, null означает, что время не требуется
Returns:
this, для цепочки вызовов, не null
Throws:
IllegalArgumentException - если оба стиля даты и времени равны null

appendLiteral

public DateTimeFormatterBuilder appendLiteral(char literal)
Добавляет литеральный символ в форматировщик.

Этот символ будет выведен во время форматирования.

Parameters:
literal - литерал для добавления, не null
Returns:
this, для цепочки вызовов, не null

appendLiteral

public DateTimeFormatterBuilder appendLiteral(String literal)
Добавляет строковый литерал в форматировщик.

Эта строка будет выведена во время форматирования.

Если литерал пустой, ничего не добавляется в форматировщик.

Parameters:
literal - литерал для добавления, не null
Returns:
this, для цепочки вызовов, не null

appendDayPeriodText

public DateTimeFormatterBuilder appendDayPeriodText(TextStyle style)
Добавляет текст периода дня в форматировщик.

Это добавляет инструкцию для форматирования/разбора текстового названия периода дня в билдер. Периоды дня определены в элементе LDML "day periods".

Во время форматирования период дня извлекается из HOUR_OF_DAY, и необязательно MINUTE_OF_HOUR, если он существует. Он будет сопоставлен с типом периода дня, определённым в LDML, таким как "morning1", а затем переведён в текст. Сопоставление с типом периода дня и его перевод зависят от языка форматировщика.

Во время разбора текст сначала будет преобразован в тип периода дня. Затем полученный период дня объединяется с другими полями для создания LocalTime на стадии разрешения. Если поле HOUR_OF_AMPM присутствует, оно объединяется с периодом дня для создания HOUR_OF_DAY, учитывая любое значение MINUTE_OF_HOUR. Если HOUR_OF_DAY присутствует, оно проверяется на соответствие периоду дня с учётом любого значения MINUTE_OF_HOUR. Если период дня присутствует без HOUR_OF_DAY, MINUTE_OF_HOUR, SECOND_OF_MINUTE и NANO_OF_SECOND, то середина периода дня устанавливается как время в режиме SMART и LENIENT. Например, если тип разобранного периода дня — "night1", а период, определённый для него в языке форматировщика, с 21:00 до 06:00, то результатом будет LocalTime 01:30. Если разрешённое время конфликтует с периодом дня, DateTimeException генерируется в режиме STRICT и SMART. В режиме LENIENT исключение не генерируется, и разобранный период дня игнорируется.

Тип "midnight" допускает как "00:00" в начале дня, так и "24:00" в конце дня, при условии, что они допустимы с разрешенным полем часа.

Parameters:
style - стиль текста для использования, не null
Returns:
this, для цепочки вызовов, не null
Since:
16

append

public DateTimeFormatterBuilder append(DateTimeFormatter formatter)
Добавляет все элементы форматировщика в билдер.

Этот метод имеет тот же эффект, что и добавление каждой составляющей форматировщика напрямую в этот билдер.

Parameters:
formatter - форматировщик для добавления, не null
Returns:
this, для цепочки вызовов, не null

appendOptional

public DateTimeFormatterBuilder appendOptional(DateTimeFormatter formatter)
Добавляет форматировщик в билдер, который будет необязательно форматировать/разбирать.

Этот метод имеет тот же эффект, что и добавление каждой составляющей напрямую в этот билдер, окружённых optionalStart() и optionalEnd().

Форматировщик будет форматировать, если данные доступны для всех полей, содержащихся в нём. Форматировщик будет разбирать, если строка соответствует, в противном случае ошибка не возвращается.

Parameters:
formatter - форматировщик для добавления, не null
Returns:
this, для цепочки вызовов, не null

appendPattern

public DateTimeFormatterBuilder appendPattern(String pattern)
Добавляет элементы, определённые указанным шаблоном, в билдер.

Все буквы от 'A' до 'Z' и от 'a' до 'z' зарезервированы в качестве символов шаблона. Символы '#', '{' и '}' зарезервированы для будущего использования. Символы '[' и ']' указывают на необязательные шаблоны. Следующие символы шаблона определены:

  Symbol  Meaning                     Presentation      Examples
  ------  -------                     ------------      -------
   G       era                         text              AD; Anno Domini; A
   u       year                        year              2004; 04
   y       year-of-era                 year              2004; 04
   D       day-of-year                 number            189
   M/L     month-of-year               number/text       7; 07; Jul; July; J
   d       day-of-month                number            10
   g       modified-julian-day         number            2451334

   Q/q     quarter-of-year             number/text       3; 03; Q3; 3rd quarter
   Y       week-based-year             year              1996; 96
   w       week-of-week-based-year     number            27
   W       week-of-month               number            4
   E       day-of-week                 text              Tue; Tuesday; T
   e/c     localized day-of-week       number/text       2; 02; Tue; Tuesday; T
   F       day-of-week-in-month        number            3

   a       am-pm-of-day                text              PM
   B       period-of-day               text              in the morning
   h       clock-hour-of-am-pm (1-12)  number            12
   K       hour-of-am-pm (0-11)        number            0
   k       clock-hour-of-day (1-24)    number            24

   H       hour-of-day (0-23)          number            0
   m       minute-of-hour              number            30
   s       second-of-minute            number            55
   S       fraction-of-second          fraction          978
   A       milli-of-day                number            1234
   n       nano-of-second              number            987654321
   N       nano-of-day                 number            1234000000

   V       time-zone ID                zone-id           America/Los_Angeles; Z; -08:30
   v       generic time-zone name      zone-name         PT, Pacific Time
   z       time-zone name              zone-name         Pacific Standard Time; PST
   O       localized zone-offset       offset-O          GMT+8; GMT+08:00; UTC-08:00;
   X       zone-offset 'Z' for zero    offset-X          Z; -08; -0830; -08:30; -083015; -08:30:15
   x       zone-offset                 offset-x          +0000; -08; -0830; -08:30; -083015; -08:30:15
   Z       zone-offset                 offset-Z          +0000; -0800; -08:00

   p       pad next                    pad modifier      1

   '       escape for text             delimiter
   ''      single quote                literal           '
   [       optional section start
   ]       optional section end
   #       reserved for future use
   {       reserved for future use
   }       reserved for future use
 

Количество символов шаблона определяет формат. См. DateTimeFormatter для описания шаблонов с точки зрения пользователя. Следующие таблицы определяют, как символы шаблона сопоставляются с билдером.

Поля даты: Символы шаблона для вывода даты.

  Pattern  Count  Equivalent builder methods
  -------  -----  --------------------------
    G       1      appendText(ChronoField.ERA, TextStyle.SHORT)
    GG      2      appendText(ChronoField.ERA, TextStyle.SHORT)
    GGG     3      appendText(ChronoField.ERA, TextStyle.SHORT)
    GGGG    4      appendText(ChronoField.ERA, TextStyle.FULL)
    GGGGG   5      appendText(ChronoField.ERA, TextStyle.NARROW)

    u       1      appendValue(ChronoField.YEAR, 1, 19, SignStyle.NORMAL)
    uu      2      appendValueReduced(ChronoField.YEAR, 2, 2, 2000)
    uuu     3      appendValue(ChronoField.YEAR, 3, 19, SignStyle.NORMAL)
    u..u    4..n   appendValue(ChronoField.YEAR, n, 19, SignStyle.EXCEEDS_PAD)
    y       1      appendValue(ChronoField.YEAR_OF_ERA, 1, 19, SignStyle.NORMAL)
    yy      2      appendValueReduced(ChronoField.YEAR_OF_ERA, 2, 2, 2000)
    yyy     3      appendValue(ChronoField.YEAR_OF_ERA, 3, 19, SignStyle.NORMAL)
    y..y    4..n   appendValue(ChronoField.YEAR_OF_ERA, n, 19, SignStyle.EXCEEDS_PAD)
    Y       1      append special localized WeekFields element for numeric week-based-year
    YY      2      append special localized WeekFields element for reduced numeric week-based-year 2 digits
    YYY     3      append special localized WeekFields element for numeric week-based-year (3, 19, SignStyle.NORMAL)
    Y..Y    4..n   append special localized WeekFields element for numeric week-based-year (n, 19, SignStyle.EXCEEDS_PAD)

    Q       1      appendValue(IsoFields.QUARTER_OF_YEAR)
    QQ      2      appendValue(IsoFields.QUARTER_OF_YEAR, 2)
    QQQ     3      appendText(IsoFields.QUARTER_OF_YEAR, TextStyle.SHORT)
    QQQQ    4      appendText(IsoFields.QUARTER_OF_YEAR, TextStyle.FULL)
    QQQQQ   5      appendText(IsoFields.QUARTER_OF_YEAR, TextStyle.NARROW)
    q       1      appendValue(IsoFields.QUARTER_OF_YEAR)
    qq      2      appendValue(IsoFields.QUARTER_OF_YEAR, 2)
    qqq     3      appendText(IsoFields.QUARTER_OF_YEAR, TextStyle.SHORT_STANDALONE)
    qqqq    4      appendText(IsoFields.QUARTER_OF_YEAR, TextStyle.FULL_STANDALONE)
    qqqqq   5      appendText(IsoFields.QUARTER_OF_YEAR, TextStyle.NARROW_STANDALONE)

    M       1      appendValue(ChronoField.MONTH_OF_YEAR)
    MM      2      appendValue(ChronoField.MONTH_OF_YEAR, 2)
    MMM     3      appendText(ChronoField.MONTH_OF_YEAR, TextStyle.SHORT)
    MMMM    4      appendText(ChronoField.MONTH_OF_YEAR, TextStyle.FULL)
    MMMMM   5      appendText(ChronoField.MONTH_OF_YEAR, TextStyle.NARROW)
    L       1      appendValue(ChronoField.MONTH_OF_YEAR)
    LL      2      appendValue(ChronoField.MONTH_OF_YEAR, 2)
    LLL     3      appendText(ChronoField.MONTH_OF_YEAR, TextStyle.SHORT_STANDALONE)
    LLLL    4      appendText(ChronoField.MONTH_OF_YEAR, TextStyle.FULL_STANDALONE)
    LLLLL   5      appendText(ChronoField.MONTH_OF_YEAR, TextStyle.NARROW_STANDALONE)

    w       1      append special localized WeekFields element for numeric week-of-year
    ww      2      append special localized WeekFields element for numeric week-of-year, zero-padded
    W       1      append special localized WeekFields element for numeric week-of-month
    d       1      appendValue(ChronoField.DAY_OF_MONTH)
    dd      2      appendValue(ChronoField.DAY_OF_MONTH, 2)
    D       1      appendValue(ChronoField.DAY_OF_YEAR)
    DD      2      appendValue(ChronoField.DAY_OF_YEAR, 2, 3, SignStyle.NOT_NEGATIVE)
    DDD     3      appendValue(ChronoField.DAY_OF_YEAR, 3)
    F       1      appendValue(ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH)
    g..g    1..n   appendValue(JulianFields.MODIFIED_JULIAN_DAY, n, 19, SignStyle.NORMAL)
    E       1      appendText(ChronoField.DAY_OF_WEEK, TextStyle.SHORT)
    EE      2      appendText(ChronoField.DAY_OF_WEEK, TextStyle.SHORT)
    EEE     3      appendText(ChronoField.DAY_OF_WEEK, TextStyle.SHORT)
    EEEE    4      appendText(ChronoField.DAY_OF_WEEK, TextStyle.FULL)
    EEEEE   5      appendText(ChronoField.DAY_OF_WEEK, TextStyle.NARROW)
    e       1      append special localized WeekFields element for numeric day-of-week
    ee      2      append special localized WeekFields element for numeric day-of-week, zero-padded
    eee     3      appendText(ChronoField.DAY_OF_WEEK, TextStyle.SHORT)
    eeee    4      appendText(ChronoField.DAY_OF_WEEK, TextStyle.FULL)
    eeeee   5      appendText(ChronoField.DAY_OF_WEEK, TextStyle.NARROW)
    c       1      append special localized WeekFields element for numeric day-of-week
    ccc     3      appendText(ChronoField.DAY_OF_WEEK, TextStyle.SHORT_STANDALONE)
    cccc    4      appendText(ChronoField.DAY_OF_WEEK, TextStyle.FULL_STANDALONE)
    ccccc   5      appendText(ChronoField.DAY_OF_WEEK, TextStyle.NARROW_STANDALONE)
 

Поля времени: Символы шаблона для вывода времени.

  Pattern  Count  Equivalent builder methods
  -------  -----  --------------------------
    a       1      appendText(ChronoField.AMPM_OF_DAY, TextStyle.SHORT)
    h       1      appendValue(ChronoField.CLOCK_HOUR_OF_AMPM)
    hh      2      appendValue(ChronoField.CLOCK_HOUR_OF_AMPM, 2)
    H       1      appendValue(ChronoField.HOUR_OF_DAY)
    HH      2      appendValue(ChronoField.HOUR_OF_DAY, 2)
    k       1      appendValue(ChronoField.CLOCK_HOUR_OF_DAY)
    kk      2      appendValue(ChronoField.CLOCK_HOUR_OF_DAY, 2)
    K       1      appendValue(ChronoField.HOUR_OF_AMPM)
    KK      2      appendValue(ChronoField.HOUR_OF_AMPM, 2)
    m       1      appendValue(ChronoField.MINUTE_OF_HOUR)
    mm      2      appendValue(ChronoField.MINUTE_OF_HOUR, 2)
    s       1      appendValue(ChronoField.SECOND_OF_MINUTE)
    ss      2      appendValue(ChronoField.SECOND_OF_MINUTE, 2)

    S..S    1..n   appendFraction(ChronoField.NANO_OF_SECOND, n, n, false)
    A..A    1..n   appendValue(ChronoField.MILLI_OF_DAY, n, 19, SignStyle.NOT_NEGATIVE)
    n..n    1..n   appendValue(ChronoField.NANO_OF_SECOND, n, 19, SignStyle.NOT_NEGATIVE)
    N..N    1..n   appendValue(ChronoField.NANO_OF_DAY, n, 19, SignStyle.NOT_NEGATIVE)
 

Периоды дня: Символы шаблона для вывода периода дня.

  Pattern  Count  Equivalent builder methods
  -------  -----  --------------------------
    B       1      appendDayPeriodText(TextStyle.SHORT)
    BBBB    4      appendDayPeriodText(TextStyle.FULL)
    BBBBB   5      appendDayPeriodText(TextStyle.NARROW)
 

Идентификатор зоны: Символы шаблона для вывода ZoneId.

  Pattern  Count  Equivalent builder methods
  -------  -----  --------------------------
    VV      2      appendZoneId()
    v       1      appendGenericZoneText(TextStyle.SHORT)
    vvvv    4      appendGenericZoneText(TextStyle.FULL)
    z       1      appendZoneText(TextStyle.SHORT)
    zz      2      appendZoneText(TextStyle.SHORT)
    zzz     3      appendZoneText(TextStyle.SHORT)
    zzzz    4      appendZoneText(TextStyle.FULL)
 

Смещение зоны: Символы шаблона для вывода ZoneOffset.

  Pattern  Count  Equivalent builder methods
  -------  -----  --------------------------
    O       1      appendLocalizedOffset(TextStyle.SHORT)
    OOOO    4      appendLocalizedOffset(TextStyle.FULL)
    X       1      appendOffset("+HHmm","Z")
    XX      2      appendOffset("+HHMM","Z")
    XXX     3      appendOffset("+HH:MM","Z")
    XXXX    4      appendOffset("+HHMMss","Z")
    XXXXX   5      appendOffset("+HH:MM:ss","Z")
    x       1      appendOffset("+HHmm","+00")
    xx      2      appendOffset("+HHMM","+0000")
    xxx     3      appendOffset("+HH:MM","+00:00")
    xxxx    4      appendOffset("+HHMMss","+0000")
    xxxxx   5      appendOffset("+HH:MM:ss","+00:00")
    Z       1      appendOffset("+HHMM","+0000")
    ZZ      2      appendOffset("+HHMM","+0000")
    ZZZ     3      appendOffset("+HHMM","+0000")
    ZZZZ    4      appendLocalizedOffset(TextStyle.FULL)
    ZZZZZ   5      appendOffset("+HH:MM:ss","Z")
 

Модификаторы: Символы шаблона, которые изменяют остальную часть шаблона:

  Pattern  Count  Equivalent builder methods
  -------  -----  --------------------------
    [       1      optionalStart()
    ]       1      optionalEnd()
    p..p    1..n   padNext(n)
 

Любая последовательность символов, не указанная выше, нераспознанный символ или зарезервированный символ вызовут исключение. Будущие версии могут добавить к набору шаблонов. Рекомендуется использовать одинарные кавычки вокруг всех символов, которые вы хотите вывести непосредственно, чтобы гарантировать, что будущие изменения не нарушат ваше приложение.

Обратите внимание, что строка шаблона похожа, но не идентична, SimpleDateFormat. Строка шаблона также похожа, но не идентична, той, что определена в репозитории данных локали Unicode (CLDR/LDML). Символы шаблона 'X' и 'u' согласованы с Unicode CLDR/LDML. В противоположность этому, SimpleDateFormat использует 'u' для числового дня недели. Символы шаблона 'y' и 'Y' по-разному анализируют двухзначные и более четырёхзначные годы. Добавлены символы шаблона 'n', 'A', 'N' и 'p'. Типы чисел будут отклонять большие числа.

Parameters:
pattern - шаблон для добавления, не null
Returns:
this, для цепочки вызовов, не null
Throws:
IllegalArgumentException - если шаблон недействителен

padNext

public DateTimeFormatterBuilder padNext(int padWidth)
Заставляет следующий добавленный принтер/парсер дополнять до фиксированной ширины пробелами.

Это дополнение будет дополнять до фиксированной ширины пробелами.

Во время форматирования отформатированный элемент будет выведен, а затем дополнен до указанной ширины. Во время форматирования будет выброшено исключение, если ширина дополнения превышена.

Во время разбора дополнение и отформатированный элемент разбираются. Если разбор допускает неточности, ширина дополнения рассматривается как максимальное значение. Дополнение разбирается жадно. Таким образом, если отформатированный элемент начинается с символа дополнения, он не будет разобран.

Parameters:
padWidth - ширина дополнения, 1 или больше
Returns:
this, для цепочки вызовов, не null
Throws:
IllegalArgumentException - если ширина дополнения слишком мала

padNext

public DateTimeFormatterBuilder padNext(int padWidth, char padChar)
Заставляет следующий добавленный принтер/парсер дополнять до фиксированной ширины.

Это дополнение предназначено для дополнения, отличного от нулевого. Нулевое дополнение следует выполнять с помощью методов appendValue.

Во время форматирования отформатированный элемент будет выведен, а затем дополнен до указанной ширины. Во время форматирования будет выброшено исключение, если ширина дополнения превышена.

Во время разбора дополнение и отформатированный элемент разбираются. Если разбор допускает неточности, ширина дополнения рассматривается как максимальное значение. Если разбор нечувствителен к регистру, то символ дополнения соответствует без учёта регистра. Дополнение разбирается жадно. Таким образом, если отформатированный элемент начинается с символа дополнения, он не будет разобран.

Parameters:
padWidth - ширина дополнения, 1 или больше
padChar - символ дополнения
Returns:
this, для цепочки вызовов, не null
Throws:
IllegalArgumentException - если ширина дополнения слишком мала

optionalStart

public DateTimeFormatterBuilder optionalStart()
Помечает начало необязательной секции.

Вывод форматирования может включать необязательные разделы, которые могут быть вложены. Необязательная секция начинается вызовом этого метода и заканчивается вызовом optionalEnd() или окончанием процесса построения.

Все элементы в необязательной секции обрабатываются как необязательные. Во время форматирования секция выводится только если данные доступны в TemporalAccessor для всех элементов в секции. Во время разбора вся секция может отсутствовать в разобранной строке.

Например, рассмотрим билдер, настроенный как builder.appendValue(HOUR_OF_DAY,2).optionalStart().appendValue(MINUTE_OF_HOUR,2). Необязательная секция заканчивается автоматически в конце билдера. Во время форматирования минута выводится только если её значение может быть получено из даты-времени. Во время разбора вход будет успешно разобран, присутствует ли минута или нет.

Returns:
this, для цепочки вызовов, не null

optionalEnd

public DateTimeFormatterBuilder optionalEnd()
Заканчивает необязательную секцию.

Вывод форматирования может включать необязательные разделы, которые могут быть вложены. Необязательная секция начинается вызовом optionalStart() и завершается этим методом (или в конце билдера).

Вызов этого метода без предварительного вызова optionalStart вызовет исключение. Вызов этого метода непосредственно после вызова optionalStart не влияет на форматировщик, кроме как завершения (пустой) необязательной секции.

Все элементы в необязательной секции обрабатываются как необязательные. Во время форматирования секция выводится только если данные доступны в TemporalAccessor для всех элементов в секции. Во время разбора вся секция может отсутствовать в разобранной строке.

Например, рассмотрим билдер, настроенный как builder.appendValue(HOUR_OF_DAY,2).optionalStart().appendValue(MINUTE_OF_HOUR,2).optionalEnd(). Во время форматирования минута выводится только если её значение может быть получено из даты-времени. Во время разбора вход будет успешно разобран, присутствует ли минута или нет.

Returns:
this, для цепочки вызовов, не null
Throws:
IllegalStateException - если не было предыдущего вызова optionalStart

toFormatter

public DateTimeFormatter toFormatter()
Завершает этот билдер, создавая DateTimeFormatter с использованием языка по умолчанию.

Это создаст форматировщик с языком по умолчанию FORMAT. Числа будут напечатаны и обработаны с помощью стандартного DecimalStyle. Стиль разрешения будет SMART.

Вызов этого метода завершит все открытые необязательные разделы путём многократного вызова optionalEnd() перед созданием форматировщика.

Этот билдер по-прежнему может использоваться после создания форматировщика, если нужно, хотя состояние может быть изменено вызовами optionalEnd.

Returns:
созданный форматировщик, не null

toFormatter

public DateTimeFormatter toFormatter(Locale locale)
Завершает этот билдер, создавая DateTimeFormatter с указанным языковым стандартом.

Это создаст форматировщик с указанным языковым стандартом. Числа будут печататься и анализироваться с использованием стандартного DecimalStyle. Стиль разрешения будет SMART.

Вызов этого метода завершит все открытые необязательные разделы, многократно вызывая optionalEnd(), прежде чем создать форматировщик.

Этот билдер все еще может использоваться после создания форматировщика, если это необходимо, хотя состояние может быть изменено вызовами optionalEnd.

Параметры:
locale - используемый языковой стандарт для форматирования, не null
Возвращает:
созданный форматировщик, не null

© 1993, 2021, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/format/DateTimeFormatterBuilder.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API