Spec-Zone.ru › OpenJDK 8

Класс 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 appendFraction(TemporalField field, int minWidth, int maxWidth, boolean decimalPoint)

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

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, Map<Long,String> textLookup)

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

DateTimeFormatterBuilder appendText(TemporalField field, TextStyle textStyle)

Добавляет текст поля даты и времени в форматер.

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, ChronoLocalDate baseDate)

Добавляет сокращенное значение поля даты и времени в форматер.

DateTimeFormatterBuilder appendValueReduced(TemporalField field, int width, int maxWidth, int baseValue)

Добавляет сокращенное значение поля даты и времени в форматер.

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)

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

Параметры:
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). В этом случае происходит описанное там форматирование и разбор.

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

appendValueReduced

public DateTimeFormatterBuilder appendValueReduced(TemporalField field,
                                                   int width,
                                                   int maxWidth,
                                                   int baseValue)

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

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

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

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

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

Параметры:
field - поле для добавления, не null
width - ширина поля для вывода и разбора, от 1 до 10
maxWidth - максимальная ширина поля для вывода, от 1 до 10
baseValue - базовое значение диапазона допустимых значений
Возвращает:
this для цепочки, не null
Исключения:
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, а также абсолютные значения для значений вне диапазона.

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

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

appendFraction

public DateTimeFormatterBuilder appendFraction(TemporalField field,
                                               int minWidth,
                                               int maxWidth,
                                               boolean decimalPoint)

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

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

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

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

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

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

appendText

public DateTimeFormatterBuilder appendText(TemporalField field)

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

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

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

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

appendText

public DateTimeFormatterBuilder appendText(TemporalField field,
                                           TextStyle textStyle)

Добавляет текст поля даты и времени в форматтер.

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

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

Параметры:
field - поле для добавления, не null
textStyle - используемый стиль текста, не null
Возвращает:
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».

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

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

appendInstant

public DateTimeFormatterBuilder appendInstant()

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

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

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

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

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

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

appendInstant

public DateTimeFormatterBuilder appendInstant(int fractionalDigits)

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

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

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

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

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

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

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

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

appendOffsetId

public DateTimeFormatterBuilder appendOffsetId()

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

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

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

appendOffset

public DateTimeFormatterBuilder appendOffset(String pattern,
                                             String noOffsetText)

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

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

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

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

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

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

appendLocalizedOffset

public DateTimeFormatterBuilder appendLocalizedOffset(TextStyle style)

Добавляет локализованное смещение часового пояса, например 'GMT+01:00', в форматировщик.

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

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

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

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

Параметры:
style - используемый стиль форматирования, не null
Возвращает:
this, для цепочки, не null
Исключения:
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")
Возвращает:
this, для цепочки, не null
См. также:
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() за исключением механизма получения часового пояса. Также обратите внимание, что разбор принимает смещения, в то время как форматирование никогда не создает смещение.

Возвращает:
this, для цепочки вызовов, не null
См. также:
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() за исключением механизма получения часового пояса.

Возвращает:
this, для цепочки вызовов, не null
См. также:
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 в этой ситуации.

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

appendZoneText

public DateTimeFormatterBuilder appendZoneText(TextStyle textStyle,
                                               Set<ZoneId> preferredZones)

Добавляет имя часового пояса, например, 'British Summer Time', в форматтер.

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

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

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

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

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

appendChronologyId

public DateTimeFormatterBuilder appendChronologyId()

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

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

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

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

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

appendChronologyText

public DateTimeFormatterBuilder appendChronologyText(TextStyle textStyle)

Добавляет имя хронологии в форматтер.

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

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

appendLocalized

public DateTimeFormatterBuilder appendLocalized(FormatStyle dateStyle,
                                                FormatStyle timeStyle)

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

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

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

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

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

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

appendLiteral

public DateTimeFormatterBuilder appendLiteral(char literal)

Добавляет литеранльный символ в форматтер.

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

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

appendLiteral

public DateTimeFormatterBuilder appendLiteral(String literal)

Добавляет строковый литеранл в форматтер.

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

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

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

append

public DateTimeFormatterBuilder append(DateTimeFormatter formatter)

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

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

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

appendOptional

public DateTimeFormatterBuilder appendOptional(DateTimeFormatter formatter)

Добавляет форматтер в билдер, который будет опционально форматировать/разбирать.

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

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

Параметры:
formatter - форматтер для добавления, не null
Возвращает:
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

   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       week-of-month               number            3

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

   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
   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, 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, 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)
    DDD     3      appendValue(ChronoField.DAY_OF_YEAR, 3)
    F       1      appendValue(ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH)
    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       1      appendValue(ChronoField.MILLI_OF_DAY)
    A..A    2..n   appendValue(ChronoField.MILLI_OF_DAY, n)
    n       1      appendValue(ChronoField.NANO_OF_SECOND)
    n..n    2..n   appendValue(ChronoField.NANO_OF_SECOND, n)
    N       1      appendValue(ChronoField.NANO_OF_DAY)
    N..N    2..n   appendValue(ChronoField.NANO_OF_DAY, n)

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

Pattern  Count  Equivalent builder methods
  -------  -----  --------------------------
    VV      2      appendZoneId()
    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      appendLocalizedOffsetPrefixed(TextStyle.SHORT);
    OOOO    4      appendLocalizedOffsetPrefixed(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'. Типы чисел отклонят большие числа.

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

padNext

public DateTimeFormatterBuilder padNext(int padWidth)

Заставляет следующий добавленный принтер/парсер выводить результат с пробелами до заданной ширины.

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

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

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

Параметры:
padWidth - ширина заполнения, 1 или больше
Возвращает:
this, для цепочки вызовов, не null
Бросает:
IllegalArgumentException - если ширина заполнения слишком мала

padNext

public DateTimeFormatterBuilder padNext(int padWidth,
                                        char padChar)

Заставляет следующий добавленный принтер/парсер выводить результат с заполнением до заданной ширины.

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

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

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

Параметры:
padWidth - ширина заполнения, 1 или больше
padChar - символ заполнения
Возвращает:
this, для цепочки вызовов, не null
Бросает:
IllegalArgumentException - если ширина заполнения слишком мала

optionalStart

public DateTimeFormatterBuilder optionalStart()

Помечает начало опциональной секции.

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

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

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

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

optionalEnd

public DateTimeFormatterBuilder optionalEnd()

Завершает опциональную секцию.

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

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

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

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

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

toFormatter

public DateTimeFormatter toFormatter()

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

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

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

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

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

toFormatter

public DateTimeFormatter toFormatter(Locale locale)

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

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

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

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

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

© 1993, 2020, 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.

Spec-Zone.ru

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