Spec-Zone.ru › OpenJDK 27

Класс DateTimeFormatter

java.lang.Object
java.time.format.DateTimeFormatter
public final class DateTimeFormatter extends Object
Форматтер для вывода и разбора объектов даты и времени.

Этот класс предоставляет основную точку входа для форматирования и разбора, а также стандартные реализации DateTimeFormatter:

  • Использование предопределённых констант, таких как ISO_LOCAL_DATE
  • Использование букв шаблона, например uuuu-MMM-dd
  • Использование локализованных стилей, например long или medium

Более сложные форматтеры предоставляет DateTimeFormatterBuilder.

Основные классы даты и времени предоставляют два метода: один для форматирования — format(DateTimeFormatter formatter), другой для разбора — parse(CharSequence text, DateTimeFormatter formatter).

Например:

 LocalDate date = LocalDate.now();
 String text = date.format(formatter);
 LocalDate parsedDate = LocalDate.parse(text, formatter);

Помимо формата, форматтеры можно создавать с нужными Locale, Chronology, ZoneId и DecimalStyle.

Метод withLocale возвращает новый форматтер, переопределяющий локаль. Локаль влияет на некоторые аспекты форматирования и разбора. Например, ofLocalizedDate предоставляет форматтер, использующий формат даты, соответствующий локали.

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

Метод withZone возвращает новый форматтер, переопределяющий зону. Если зона переопределена, значение даты и времени перед форматированием преобразуется в ZonedDateTime с указанным ZoneId. При разборе ZoneId применяется перед возвратом значения.

Метод withDecimalStyle возвращает новый форматтер, переопределяющий DecimalStyle. Символы DecimalStyle используются для форматирования и разбора.

Некоторым приложениям может понадобиться старый класс java.text.Format для форматирования. Метод toFormat() возвращает реализацию java.text.Format.

Предопределённые форматтеры

Предопределённые форматтеры
Форматтер Описание Пример
ofLocalizedDate(dateStyle) Форматтер со стилем даты, заданным локалью '2011-12-03'
ofLocalizedTime(timeStyle) Форматтер со стилем времени, заданным локалью '10:15:30'
ofLocalizedDateTime(dateTimeStyle) Форматтер со стилем даты и времени, заданным локалью '3 Jun 2008 11:05:30'
ofLocalizedDateTime(dateStyle,timeStyle) Форматтер со стилями даты и времени, заданными локалью '3 Jun 2008 11:05'
BASIC_ISO_DATE Базовая дата ISO '20111203'
ISO_LOCAL_DATE Локальная дата ISO '2011-12-03'
ISO_OFFSET_DATE Дата ISO со смещением '2011-12-03+01:00'
ISO_DATE Дата ISO со смещением или без него '2011-12-03+01:00'; '2011-12-03'
ISO_LOCAL_TIME Время без смещения '10:15:30'
ISO_OFFSET_TIME Время со смещением '10:15:30+01:00'
ISO_TIME Время со смещением или без него '10:15:30+01:00'; '10:15:30'
ISO_LOCAL_DATE_TIME Локальные дата и время ISO '2011-12-03T10:15:30'
ISO_OFFSET_DATE_TIME Дата и время со смещением '2011-12-03T10:15:30+01:00'
ISO_ZONED_DATE_TIME Дата и время с зоной '2011-12-03T10:15:30+01:00[Europe/Paris]'
ISO_DATE_TIME Дата и время с ZoneId '2011-12-03T10:15:30+01:00[Europe/Paris]'
ISO_ORDINAL_DATE Год и день года '2012-337'
ISO_WEEK_DATE Год и неделя '2012-W48-6'
ISO_INSTANT Дата и время момента времени '2011-12-03T10:15:30Z'
RFC_1123_DATE_TIME RFC 1123 / RFC 822 'Tue, 3 Jun 2008 11:05:30 GMT'

Шаблоны форматирования и разбора

Шаблоны основаны на простой последовательности букв и символов. Шаблон используется для создания форматтера с помощью методов ofPattern(String) и ofPattern(String, Locale). Например, "d MMM uuuu" отформатирует дату 2011-12-03 как '3 Dec 2011'. Форматтер, созданный на основе шаблона, можно использовать сколько угодно раз; он неизменяем и потокобезопасен.

Например:

 LocalDate date = LocalDate.now();
 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy MM dd");
 String text = date.format(formatter);
 LocalDate parsedDate = LocalDate.parse(text, formatter);

Все буквы от 'A' до 'Z' и от 'a' до 'z' зарезервированы в качестве букв шаблона. Определены следующие буквы шаблона:

Буквы и символы шаблона
Символ Значение Представление Примеры
G эра текст AD; Anno Domini; A
u год год 2004; 04
y год эры год 2004; 04
D день года число 189
M/L месяц года число/текст 7; 07; Jul; July; J
d день месяца число 10
g модифицированный юлианский день число 2451334
Q/q квартал года число/текст 3; 03; Q3; 3rd quarter
Y год по неделям год 1996; 96
w неделя года по неделям число 27
W неделя месяца число 4
E день недели текст Tue; Tuesday; T
e/c локализованный день недели число/текст 2; 02; Tue; Tuesday; T
F неделя месяца с выравниванием число 3
a часть суток до/после полудня текст PM
B период суток текст утром
h час по 12-часовым часам (1–12) число 12
K час до/после полудня (0–11) число 0
k час суток по 24-часовым часам (1–24) число 24
H час суток (0–23) число 0
m минута часа число 30
s секунда минуты число 55
S доля секунды дробь 978
A миллисекунда суток число 1234
n наносекунда секунды число 987654321
N наносекунда суток число 1234000000
V идентификатор часового пояса идентификатор зоны America/Los_Angeles; Z; -08:30
v общее название часового пояса название зоны Pacific Time; PT
z название часового пояса название зоны Pacific Standard Time; PST
O локализованное смещение зоны смещение-O GMT+8; GMT+08:00; UTC-08:00
X смещение зоны; для нулевого значения — 'Z' смещение-X Z; -08; -0830; -08:30; -083015; -08:30:15
x смещение зоны смещение-x +0000; -08; -0830; -08:30; -083015; -08:30:15
Z смещение зоны смещение-Z +0000; -0800; -08:00
p добавить заполнение для следующего элемента модификатор заполнения 1
' экранирование текста разделитель
'' одинарная кавычка литерал '
[ начало необязательной секции
] конец необязательной секции
# зарезервировано для будущего использования
{ зарезервировано для будущего использования
} зарезервировано для будущего использования

Количество букв шаблона определяет формат.

Текст: Стиль текста определяется количеством используемых букв шаблона. Если букв шаблона меньше четырёх, используется short form. Если букв шаблона ровно четыре, используется full form. Если букв шаблона ровно пять, используется narrow form. Буквы шаблона 'L', 'c' и 'q' задают самостоятельную форму текстовых стилей.

Число: Если буква указана один раз, значение выводится с минимальным количеством цифр и без заполнения. В противном случае количество цифр задаёт ширину выходного поля; при необходимости значение дополняется нулями слева. Для следующих букв шаблона число повторений ограничено. Буквы 'c' и 'F' можно указать только один раз. Буквы 'd', 'H', 'h', 'K', 'k', 'm' и 's' можно указать не более двух раз. Букву 'D' можно указать не более трёх раз.

Число/текст: Если буква шаблона указана три раза или чаще, применяются приведённые выше правила для текста. В противном случае применяются правила для чисел.

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

Год: Количество букв задаёт минимальную ширину поля, при меньшем значении которой выполняется заполнение. Если буква указана два раза, используется двухзначный формат reduced. При форматировании выводятся две последние цифры. При разборе используется базовое значение 2000, поэтому год попадает в диапазон от 2000 до 2099 включительно. Если букв указано меньше четырёх (но не две), знак для отрицательных лет выводится согласно SignStyle.NORMAL. В остальных случаях знак выводится, если превышена ширина заполнения, согласно SignStyle.EXCEEDS_PAD.

ZoneId: Выводится идентификатор часового пояса, например 'Europe/Paris'. Если буква указана два раза, выводится идентификатор часового пояса. Любое другое количество букв приводит к исключению IllegalArgumentException.

Названия зон: Выводится отображаемое название идентификатора часового пояса. Если буква шаблона — 'z', выводится название зоны с учётом перехода на летнее время. Если данных недостаточно, чтобы определить, применяется ли летнее время, используется название без учёта перехода на летнее время. Если буква указана один, два или три раза, выводится краткое название. Если буква указана четыре раза, выводится полное название. Пять или более букв приводят к исключению IllegalArgumentException.

Если буква шаблона — 'v', выводится название зоны без учёта перехода на летнее время. Если буква указана один раз, выводится краткое название. Если буква указана четыре раза, выводится полное название. Два, три, а также пять или более букв приводят к исключению IllegalArgumentException.

Смещения X и x: Формат смещения зависит от количества букв шаблона. Одна буква выводит только часы, например '+01', если только минуты не равны нулю; в последнем случае выводятся также минуты, например '+0130'. Две буквы выводят часы и минуты без двоеточия, например '+0130'. Три буквы выводят часы и минуты с двоеточием, например '+01:30'. Четыре буквы выводят часы и минуты, а также секунды, если они ненулевые, без двоеточия, например '+013015'. Пять букв выводят часы и минуты, а также секунды, если они ненулевые, с двоеточием, например '+01:30:15'. Шесть или более букв приводят к исключению IllegalArgumentException. Буква шаблона 'X' (верхнего регистра) выводит 'Z', если выводимое смещение равно нулю; буква шаблона 'x' (нижнего регистра) выводит '+00', '+0000' или '+00:00'.

Смещение O: Для ненулевого смещения формат локализованного смещения зависит от количества букв шаблона. Одна буква выводит краткую форму локализованного смещения — локализованный текст смещения, например 'GMT', с часом без ведущего нуля, необязательными минутами из двух цифр и секундами, если они ненулевые, и двоеточием; например, 'GMT+8'. Четыре буквы выводят полную форму — локализованный текст смещения, например 'GMT', с полями часа и минуты из двух цифр, необязательным полем секунд, если они ненулевые, и двоеточием; например, 'GMT+08:00'. Если смещение равно нулю, выводится только локализованный текст. Любое другое количество букв приводит к исключению IllegalArgumentException.

Смещение Z: Формат смещения зависит от количества букв шаблона. Одна, две или три буквы выводят часы и минуты без двоеточия, например '+0130'. Если смещение равно нулю, выводится '+0000'. Четыре буквы выводят полную форму локализованного смещения, эквивалентную четырём буквам смещения O. Если смещение равно нулю, выводится соответствующий локализованный текст смещения. Пять букв выводят часы и минуты, а также секунды, если они ненулевые, с двоеточием. Если смещение равно нулю, выводится 'Z'. Шесть или более букв приводят к исключению IllegalArgumentException.

Необязательная секция: Маркеры необязательной секции действуют точно так же, как вызовы DateTimeFormatterBuilder.optionalStart() и DateTimeFormatterBuilder.optionalEnd().

Модификатор заполнения: Изменяет непосредственно следующий шаблон, добавляя заполнение пробелами. Ширина заполнения определяется количеством букв шаблона. Это эквивалентно вызову DateTimeFormatterBuilder.padNext(int).

Например, 'ppH' выводит час суток, дополненный пробелами слева до ширины 2.

Любая нераспознанная буква считается ошибкой. Любой символ, не являющийся буквой, кроме '[', ']', '{', '}', '#' и одинарной кавычки, выводится напрямую. Несмотря на это, рекомендуется заключать все символы, которые нужно вывести напрямую, в одинарные кавычки, чтобы будущие изменения не нарушили работу приложения.

Разрешение

Разбор выполняется в два этапа. Сначала текст разбирается с использованием структуры, заданной форматтером, в результате чего получается Map полей и значений, ZoneId и Chronology. Затем разобранные данные разрешаются: различные поля проверяются, объединяются и упрощаются, чтобы получить более полезные значения.

Этот класс предоставляет пять методов разбора. Четыре из них выполняют как разбор, так и разрешение. Пятый метод, parseUnresolved(CharSequence, ParsePosition), выполняет только первый этап, оставляя результат неразрешённым. Таким образом, это низкоуровневая операция.

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

ResolverStyle — это перечисление, предлагающее три разных режима: строгий, интеллектуальный и нестрогий. По умолчанию используется интеллектуальный режим. Его можно задать с помощью withResolverStyle(ResolverStyle).

Параметр withResolverFields(TemporalField...) позволяет отфильтровать набор полей, которые будут разрешены, до начала разрешения. Например, если форматтер разобрал год, месяц, день месяца и день года, дату можно разрешить двумя способами: (год + месяц + день месяца) и (год + день года). Параметр полей разрешения позволяет выбрать один из этих способов. Если поля разрешения не заданы, оба способа должны дать одну и ту же дату.

Разрешение отдельных полей для получения полной даты и времени — сложный процесс, поведение которого распределено между несколькими классами. Он выполняется в следующие этапы:

  1. Определяется хронология. Хронологией результата становится либо разобранная хронология, либо, если хронология не была разобрана, хронология, заданная в этом классе; если она равна null, используется IsoChronology.
  2. Разрешаются поля даты ChronoField. Это выполняется с помощью Chronology.resolveDate(Map, ResolverStyle). Описание разрешения полей приведено в реализации Chronology.
  3. Разрешаются поля времени ChronoField. Это описано в ChronoField и одинаково для всех хронологий.
  4. Обрабатываются все поля, которые не являются ChronoField. Это выполняется с помощью TemporalField.resolve(Map, TemporalAccessor, ResolverStyle). Описание разрешения полей приведено в реализации TemporalField.
  5. Поля даты и времени ChronoField разрешаются повторно. Это позволяет полям, полученным на четвёртом этапе, сформировать значения ChronoField, которые затем преобразуются в даты и время.
  6. Формируется LocalTime, если доступен хотя бы час суток. При этом для минут, секунд и доли секунды задаются значения по умолчанию.
  7. Все оставшиеся неразрешённые поля сверяются с разрешённой датой и/или временем. Так, на предыдущем этапе (год + месяц + день месяца) разрешаются в дату, а на этом этапе проверяется, соответствует ли ей день недели.
  8. Если было разобрано избыточное количество дней, оно добавляется к дате, если дата доступна.
  9. Если присутствует поле секунд, но LocalTime не было разобрано, обработчик разрешения обеспечивает наличие значений миллисекунд, микросекунд и наносекунд, требуемых контрактом ChronoField. Если значения отсутствуют, они устанавливаются в ноль.
  10. Если были разобраны и дата, и время, а также присутствует смещение или зона, создаётся поле ChronoField.INSTANT_SECONDS. Если было разобрано смещение, оно объединяется с LocalDateTime для получения момента времени; при этом любая зона игнорируется. Если ZoneId была разобрана без смещения, зона объединяется с LocalDateTime для получения момента времени по правилам ChronoLocalDateTime.atZone(ZoneId). Если ZoneId была разобрана по названию зоны, указывающему, действует ли летнее время, этот факт используется для выбора правильного смещения при перекрытии местной временной шкалы.
Требования к реализации:
Этот класс неизменяем и потокобезопасен.
С версии:
1.8

Краткое описание полей

Модификатор и тип Поле Описание
static final DateTimeFormatter BASIC_ISO_DATE
Форматтер дат ISO, форматирующий или разбирающий дату без смещения, например '20111203'.
static final DateTimeFormatter ISO_DATE
Форматтер дат ISO, форматирующий или разбирающий дату со смещением, если оно доступно, например '2011-12-03' или '2011-12-03+01:00'.
static final DateTimeFormatter ISO_DATE_TIME
Форматтер даты и времени в стиле ISO, форматирующий или разбирающий дату и время со смещением и часовым поясом, если они доступны, например '2011-12-03T10:15:30', '2011-12-03T10:15:30+01:00' или '2011-12-03T10:15:30+01:00[Europe/Paris]'.
static final DateTimeFormatter ISO_INSTANT
Форматтер момента времени ISO, форматирующий или разбирающий момент времени в UTC, например '2011-12-03T10:15:30Z'.
static final DateTimeFormatter ISO_LOCAL_DATE
Форматтер дат ISO, форматирующий или разбирающий дату без смещения, например '2011-12-03'.
static final DateTimeFormatter ISO_LOCAL_DATE_TIME
Форматтер даты и времени ISO, форматирующий или разбирающий дату и время без смещения, например '2011-12-03T10:15:30'.
static final DateTimeFormatter ISO_LOCAL_TIME
Форматтер времени ISO, форматирующий или разбирающий время без смещения, например '10:15' или '10:15:30'.
static final DateTimeFormatter ISO_OFFSET_DATE
Форматтер дат ISO, форматирующий или разбирающий дату со смещением, например '2011-12-03+01:00'.
static final DateTimeFormatter ISO_OFFSET_DATE_TIME
Форматтер даты и времени ISO, форматирующий или разбирающий дату и время со смещением, например '2011-12-03T10:15:30+01:00'.
static final DateTimeFormatter ISO_OFFSET_TIME
Форматтер времени ISO, форматирующий или разбирающий время со смещением, например '10:15+01:00' или '10:15:30+01:00'.
static final DateTimeFormatter ISO_ORDINAL_DATE
Форматтер дат ISO, форматирующий или разбирающий порядковую дату без смещения, например '2012-337'.
static final DateTimeFormatter ISO_TIME
Форматтер времени ISO, форматирующий или разбирающий время со смещением, если оно доступно, например '10:15', '10:15:30' или '10:15:30+01:00'.
static final DateTimeFormatter ISO_WEEK_DATE
Форматтер дат ISO, форматирующий или разбирающий дату в формате недели без смещения, например '2012-W48-6'.
static final DateTimeFormatter ISO_ZONED_DATE_TIME
Форматтер даты и времени в стиле ISO, форматирующий или разбирающий дату и время со смещением и часовым поясом, например '2011-12-03T10:15:30+01:00[Europe/Paris]'.
static final DateTimeFormatter RFC_1123_DATE_TIME
Форматтер даты и времени RFC-1123, например 'Tue, 3 Jun 2008 11:05:30 GMT'.

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

Модификатор и тип Метод Описание
String format(TemporalAccessor temporal)
Форматирует объект даты и времени с помощью этого форматтера.
void formatTo(TemporalAccessor temporal, Appendable appendable)
Форматирует объект даты и времени в Appendable с помощью этого форматтера.
Chronology getChronology()
Возвращает переопределяющую хронологию, используемую при форматировании.
DecimalStyle getDecimalStyle()
Возвращает DecimalStyle, используемый при форматировании.
Locale getLocale()
Возвращает локаль, используемую при форматировании.
Set<TemporalField> getResolverFields()
Возвращает поля разрешения, используемые при разборе.
ResolverStyle getResolverStyle()
Возвращает стиль разрешения, используемый при разборе.
ZoneId getZone()
Возвращает переопределяющий часовой пояс, используемый при форматировании.
DateTimeFormatter localizedBy(Locale locale)
Возвращает копию этого форматтера с локализованными значениями локали, календаря, региона, десятичного формата и/или часового пояса, которые имеют приоритет над значениями в этом форматтере.
static DateTimeFormatter ofLocalizedDate(FormatStyle dateStyle)
Возвращает формат даты для хронологии ISO, зависящий от локали.
static DateTimeFormatter ofLocalizedDateTime(FormatStyle dateTimeStyle)
Возвращает форматтер даты и времени для хронологии ISO, зависящий от локали.
static DateTimeFormatter ofLocalizedDateTime(FormatStyle dateStyle, FormatStyle timeStyle)
Возвращает формат даты и времени для хронологии ISO, зависящий от локали.
static DateTimeFormatter ofLocalizedPattern(String requestedTemplate)
Создаёт форматтер для хронологии ISO, зависящий от локали и полученный на основе запрошенного шаблона.
static DateTimeFormatter ofLocalizedTime(FormatStyle timeStyle)
Возвращает формат времени для хронологии ISO, зависящий от локали.
static DateTimeFormatter ofPattern(String pattern)
Создаёт форматтер с использованием указанного шаблона.
static DateTimeFormatter ofPattern(String pattern, Locale locale)
Создаёт форматтер с использованием указанного шаблона и локали.
TemporalAccessor parse(CharSequence text)
Полностью разбирает текст, создавая временной объект.
TemporalAccessor parse(CharSequence text, ParsePosition position)
Разбирает текст с помощью этого форматтера, позволяя управлять позицией в тексте.
<T> T parse(CharSequence text, TemporalQuery<T> query)
Полностью разбирает текст, создавая объект указанного типа.
TemporalAccessor parseBest(CharSequence text, TemporalQuery<?>... queries)
Полностью разбирает текст, создавая объект одного из указанных типов.
static final TemporalQuery<Period> parsedExcessDays()
Запрос, предоставляющий доступ к разобранным дополнительным дням.
static final TemporalQuery<Boolean> parsedLeapSecond()
Запрос, предоставляющий доступ к информации о том, была ли разобрана високосная секунда.
TemporalAccessor parseUnresolved(CharSequence text, ParsePosition position)
Разбирает текст с помощью этого форматтера, не выполняя разрешение результата; предназначен для расширенных сценариев использования.
Format toFormat()
Возвращает этот форматтер как экземпляр java.text.Format.
Format toFormat(TemporalQuery<?> parseQuery)
Возвращает этот форматтер как экземпляр java.text.Format, который выполняет разбор с использованием указанного запроса.
String toString()
Возвращает описание используемых форматтеров.
DateTimeFormatter withChronology(Chronology chrono)
Возвращает копию этого форматтера с новой переопределяющей хронологией.
DateTimeFormatter withDecimalStyle(DecimalStyle decimalStyle)
Возвращает копию этого форматтера с новым DecimalStyle.
DateTimeFormatter withLocale(Locale locale)
Возвращает копию этого форматтера с новой локалью.
DateTimeFormatter withResolverFields(TemporalField... resolverFields)
Возвращает копию этого форматтера с новым набором полей разрешения.
DateTimeFormatter withResolverFields(Set<TemporalField> resolverFields)
Возвращает копию этого форматтера с новым набором полей разрешения.
DateTimeFormatter withResolverStyle(ResolverStyle resolverStyle)
Возвращает копию этого форматтера с новым стилем разрешения.
DateTimeFormatter withZone(ZoneId zone)
Возвращает копию этого форматтера с новым переопределяющим часовым поясом.

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли другой объект этому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Финализация объявлена устаревшей и будет удалена в одном из следующих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо истечения заданного промежутка реального времени.

Подробное описание полей

ISO_LOCAL_DATE

public static final DateTimeFormatter ISO_LOCAL_DATE
Форматтер даты ISO, который форматирует или анализирует дату без смещения, например '2011-12-03'.

Возвращает неизменяемый форматтер, способный форматировать и анализировать расширенный локальный формат даты ISO-8601. Формат состоит из следующих элементов:

  • Четыре или более цифр для поля year. Годы в диапазоне от 0000 до 9999 дополняются нулями слева, чтобы получить четыре цифры. Перед годами за пределами этого диапазона ставится положительный или отрицательный знак.
  • Дефис ('HYPHEN-MINUS', U+002D)
  • Две цифры для поля month-of-year. Значение дополняется нулём слева, чтобы получить две цифры.
  • Дефис ('HYPHEN-MINUS', U+002D)
  • Две цифры для поля day-of-month. Значение дополняется нулём слева, чтобы получить две цифры.

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

ISO_OFFSET_DATE

public static final DateTimeFormatter ISO_OFFSET_DATE
Форматтер даты ISO, который форматирует или анализирует дату со смещением, например '2011-12-03+01:00'.

Возвращает неизменяемый форматтер, способный форматировать и анализировать расширенный формат даты ISO-8601 со смещением. Формат состоит из следующих элементов:

  • ISO_LOCAL_DATE
  • offset ID. Если смещение содержит секунды, они также будут обработаны, хотя это не предусмотрено стандартом ISO-8601. Разбор смещения выполняется в нестрогом режиме, поэтому минуты и секунды могут отсутствовать. Регистр символов при разборе не учитывается.

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

ISO_DATE

public static final DateTimeFormatter ISO_DATE
Форматтер даты ISO, который форматирует или анализирует дату со смещением, если оно доступно, например '2011-12-03' или '2011-12-03+01:00'.

Возвращает неизменяемый форматтер, способный форматировать и анализировать расширенный формат даты ISO-8601. Формат состоит из следующих элементов:

  • ISO_LOCAL_DATE
  • Если смещение недоступно, формат завершён.
  • offset ID. Если смещение содержит секунды, они также будут обработаны, хотя это не предусмотрено стандартом ISO-8601. Разбор смещения выполняется в нестрогом режиме, поэтому минуты и секунды могут отсутствовать. Регистр символов при разборе не учитывается.

Поскольку этот форматтер содержит необязательный элемент, для разбора может потребоваться использовать parseBest(CharSequence, TemporalQuery...).

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

ISO_LOCAL_TIME

public static final DateTimeFormatter ISO_LOCAL_TIME
Форматтер времени ISO, который форматирует или анализирует время без смещения, например '10:15' или '10:15:30'.

Возвращает неизменяемый форматтер, способный форматировать и анализировать расширенный локальный формат времени ISO-8601. Формат состоит из следующих элементов:

  • Две цифры для поля hour-of-day. Значение дополняется нулём слева, чтобы получить две цифры.
  • Двоеточие
  • Две цифры для поля minute-of-hour. Значение дополняется нулём слева, чтобы получить две цифры.
  • Если секунды недоступны, формат завершён.
  • Двоеточие
  • Две цифры для поля second-of-minute. Значение дополняется нулём слева, чтобы получить две цифры.
  • Если наносекунды равны нулю или недоступны, формат завершён.
  • Десятичный разделитель
  • От одной до девяти цифр для поля nano-of-second. Выводится столько цифр, сколько необходимо.

Возвращаемый форматтер не переопределяет хронологию или часовой пояс. Он использует стиль разрешения STRICT.

ISO_OFFSET_TIME

public static final DateTimeFormatter ISO_OFFSET_TIME
Форматтер времени ISO, который форматирует или анализирует время со смещением, например '10:15+01:00' или '10:15:30+01:00'.

Возвращает неизменяемый форматтер, способный форматировать и анализировать расширенный формат времени ISO-8601 со смещением. Формат состоит из следующих элементов:

  • ISO_LOCAL_TIME
  • offset ID. Если смещение содержит секунды, они также будут обработаны, хотя это не предусмотрено стандартом ISO-8601. Разбор смещения выполняется в нестрогом режиме, поэтому минуты и секунды могут отсутствовать. Регистр символов при разборе не учитывается.

Возвращаемый форматтер не переопределяет хронологию или часовой пояс. Он использует стиль разрешения STRICT.

ISO_TIME

public static final DateTimeFormatter ISO_TIME
Форматтер времени ISO, который форматирует или анализирует время со смещением, если оно доступно, например '10:15', '10:15:30' или '10:15:30+01:00'.

Возвращает неизменяемый форматтер, способный форматировать и анализировать расширенный формат времени ISO-8601 со смещением. Формат состоит из следующих элементов:

  • ISO_LOCAL_TIME
  • Если смещение недоступно, формат завершён.
  • offset ID. Если смещение содержит секунды, они также будут обработаны, хотя это не предусмотрено стандартом ISO-8601. Разбор смещения выполняется в нестрогом режиме, поэтому минуты и секунды могут отсутствовать. Регистр символов при разборе не учитывается.

Поскольку этот форматтер содержит необязательный элемент, для разбора может потребоваться использовать parseBest(CharSequence, TemporalQuery...).

Возвращаемый форматтер не переопределяет хронологию или часовой пояс. Он использует стиль разрешения STRICT.

ISO_LOCAL_DATE_TIME

public static final DateTimeFormatter ISO_LOCAL_DATE_TIME
Форматтер даты и времени ISO, который форматирует или анализирует дату и время без смещения, например '2011-12-03T10:15:30'.

Возвращает неизменяемый форматтер, способный форматировать и анализировать расширенный формат даты и времени ISO-8601 со смещением. Формат состоит из следующих элементов:

  • ISO_LOCAL_DATE
  • Буква 'T'. Регистр символов при разборе не учитывается.
  • ISO_LOCAL_TIME

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

ISO_OFFSET_DATE_TIME

public static final DateTimeFormatter ISO_OFFSET_DATE_TIME
Форматтер даты и времени ISO, который форматирует или анализирует дату и время со смещением, например '2011-12-03T10:15:30+01:00'.

Возвращает неизменяемый форматтер, способный форматировать и анализировать расширенный формат даты и времени ISO-8601 со смещением. Формат состоит из следующих элементов:

  • ISO_LOCAL_DATE_TIME
  • offset ID. Если смещение содержит секунды, они также будут обработаны, хотя это не предусмотрено стандартом ISO-8601. Разбор смещения выполняется в нестрогом режиме, поэтому минуты и секунды могут отсутствовать. Регистр символов при разборе не учитывается.

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

ISO_ZONED_DATE_TIME

public static final DateTimeFormatter ISO_ZONED_DATE_TIME
Форматтер даты и времени, подобный ISO, который форматирует или анализирует дату и время со смещением и часовым поясом, например '2011-12-03T10:15:30+01:00[Europe/Paris]'.

Возвращает неизменяемый форматтер, способный форматировать и анализировать формат, расширяющий расширенный формат даты и времени ISO-8601 со смещением за счёт добавления часового пояса. Часть в квадратных скобках не входит в стандарт ISO-8601. Формат состоит из следующих элементов:

  • ISO_OFFSET_DATE_TIME
  • Если идентификатор часового пояса недоступен или является ZoneOffset, формат завершён.
  • Открывающая квадратная скобка '['.
  • zone ID. Эта часть не входит в стандарт ISO-8601. При разборе учитывается регистр символов.
  • Закрывающая квадратная скобка ']'.

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

ISO_DATE_TIME

public static final DateTimeFormatter ISO_DATE_TIME
Форматтер даты и времени, подобный ISO, который форматирует или анализирует дату и время со смещением и часовым поясом, если они доступны, например '2011-12-03T10:15:30', '2011-12-03T10:15:30+01:00' или '2011-12-03T10:15:30+01:00[Europe/Paris]'.

Возвращает неизменяемый форматтер, способный форматировать и анализировать расширенный локальный формат даты и времени ISO-8601 или формат со смещением, а также расширенный формат, не входящий в ISO, с указанием часового пояса. Формат состоит из следующих элементов:

  • ISO_LOCAL_DATE_TIME
  • Если смещение недоступно для форматирования или разбора, формат завершён.
  • offset ID. Если смещение содержит секунды, они также будут обработаны, хотя это не предусмотрено стандартом ISO-8601. Разбор смещения выполняется в нестрогом режиме, поэтому минуты и секунды могут отсутствовать.
  • Если идентификатор часового пояса недоступен или является ZoneOffset, формат завершён.
  • Открывающая квадратная скобка '['.
  • zone ID. Эта часть не входит в стандарт ISO-8601. При разборе учитывается регистр символов.
  • Закрывающая квадратная скобка ']'.

Поскольку этот форматтер содержит необязательный элемент, для разбора может потребоваться использовать parseBest(CharSequence, TemporalQuery...).

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

ISO_ORDINAL_DATE

public static final DateTimeFormatter ISO_ORDINAL_DATE
Форматтер даты ISO, который форматирует или анализирует порядковую дату без смещения, например '2012-337'.

Возвращает неизменяемый форматтер, способный форматировать и анализировать расширенный формат порядковой даты ISO-8601. Формат состоит из следующих элементов:

  • Четыре или более цифр для поля year. Годы в диапазоне от 0000 до 9999 дополняются нулями слева, чтобы получить четыре цифры. Перед годами за пределами этого диапазона ставится положительный или отрицательный знак.
  • Дефис ('HYPHEN-MINUS', U+002D)
  • Три цифры для поля day-of-year. Значение дополняется нулями слева, чтобы получить три цифры.
  • Если смещение недоступно для форматирования или разбора, формат завершён.
  • offset ID. Если смещение содержит секунды, они также будут обработаны, хотя это не предусмотрено стандартом ISO-8601. Разбор смещения выполняется в нестрогом режиме, поэтому минуты и секунды могут отсутствовать. Регистр символов при разборе не учитывается.

Поскольку этот форматтер содержит необязательный элемент, для разбора может потребоваться использовать parseBest(CharSequence, TemporalQuery...).

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

ISO_WEEK_DATE

public static final DateTimeFormatter ISO_WEEK_DATE
Форматтер даты ISO, который форматирует или анализирует дату по неделям без смещения, например '2012-W48-6'.

Возвращает неизменяемый форматтер, способный форматировать и анализировать расширенный формат даты по неделям ISO-8601. Формат состоит из следующих элементов:

  • Четыре или более цифр для поля week-based-year. Годы в диапазоне от 0000 до 9999 дополняются нулями слева, чтобы получить четыре цифры. Перед годами за пределами этого диапазона ставится положительный или отрицательный знак.
  • Дефис ('HYPHEN-MINUS', U+002D)
  • Буква 'W'. Регистр символов при разборе не учитывается.
  • Две цифры для поля week-of-week-based-year. Значение дополняется нулём слева, чтобы получить три цифры.
  • Дефис ('HYPHEN-MINUS', U+002D)
  • Одна цифра для поля day-of-week. Значение задаётся в диапазоне от понедельника (1) до воскресенья (7).
  • Если смещение недоступно для форматирования или разбора, формат завершён.
  • offset ID. Если смещение содержит секунды, они также будут обработаны, хотя это не предусмотрено стандартом ISO-8601. Разбор смещения выполняется в нестрогом режиме, поэтому минуты и секунды могут отсутствовать. Регистр символов при разборе не учитывается.

Поскольку этот форматтер содержит необязательный элемент, для разбора может потребоваться использовать parseBest(CharSequence, TemporalQuery...).

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

ISO_INSTANT

public static final DateTimeFormatter ISO_INSTANT
Форматтер мгновения ISO, который форматирует или анализирует мгновение времени в UTC, например '2011-12-03T10:15:30Z'.

Возвращает неизменяемый форматтер, способный форматировать и анализировать формат мгновения ISO-8601. При форматировании к мгновению всегда добавляется суффикс 'Z', указывающий на UTC. Секунды всегда выводятся. Для наносекунд выводится ноль, три, шесть или девять цифр, в зависимости от необходимости. При разборе для обработки смещения будет использоваться нестрогий режим метода appendOffset("+HH", "Z"); при необходимости мгновение будет преобразовано в UTC. Требуется, чтобы время содержало как минимум поле секунд. Разбираются дробные секунды от нуля до девяти знаков. Локализованный десятичный формат не используется.

Это специальный форматтер, предназначенный для представления в удобочитаемом виде значения Instant. Класс Instant предназначен для представления только точки во времени и внутренне хранит значение в наносекундах относительно фиксированной эпохи 1970-01-01Z. Поэтому Instant нельзя отформатировать как дату или время без указания часового пояса. Этот форматтер позволяет отформатировать Instant, выполняя подходящее преобразование с помощью ZoneOffset.UTC.

Формат состоит из следующего элемента:

  • ISO_OFFSET_DATE_TIME, в котором мгновение преобразуется из полей ChronoField.INSTANT_SECONDS и ChronoField.NANO_OF_SECOND с использованием смещения UTC. Регистр символов при разборе не учитывается.

Возвращаемый форматтер не переопределяет хронологию или часовой пояс. Он использует стиль разрешения STRICT.

BASIC_ISO_DATE

public static final DateTimeFormatter BASIC_ISO_DATE
Форматтер даты ISO, который форматирует или анализирует дату без смещения, например '20111203'.

Возвращает неизменяемый форматтер, способный форматировать и анализировать базовый локальный формат даты ISO-8601. Формат состоит из следующих элементов:

  • Четыре цифры для поля year. Поддерживаются только годы в диапазоне от 0000 до 9999.
  • Две цифры для поля month-of-year. Значение дополняется нулём слева, чтобы получить две цифры.
  • Две цифры для поля day-of-month. Значение дополняется нулём слева, чтобы получить две цифры.
  • Если смещение недоступно для форматирования или разбора, формат завершён.
  • offset ID без двоеточий. Если смещение содержит секунды, они также будут обработаны, хотя это не предусмотрено стандартом ISO-8601. Разбор смещения выполняется в нестрогом режиме, поэтому минуты и секунды могут отсутствовать. Регистр символов при разборе не учитывается.

Поскольку этот форматтер содержит необязательный элемент, для разбора может потребоваться использовать parseBest(CharSequence, TemporalQuery...).

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

RFC_1123_DATE_TIME

public static final DateTimeFormatter RFC_1123_DATE_TIME
Форматтер даты и времени RFC-1123, например 'Tue, 3 Jun 2008 11:05:30 GMT'.

Возвращает неизменяемый форматтер, способный форматировать и анализировать большую часть формата RFC-1123. RFC-1123 обновляет RFC-822, заменяя двузначное представление года четырёхзначным. Эта реализация требует, чтобы год состоял из четырёх цифр. Кроме того, эта реализация не обрабатывает названия североамериканских часовых поясов и военных часовых поясов, а поддерживает только 'GMT' и числовые значения смещения.

Формат состоит из следующих элементов:

  • Если день недели недоступен для форматирования или разбора, переходите к дню месяца.
  • Трёхбуквенное обозначение day-of-week на английском языке.
  • Запятая
  • Пробел
  • Одна или две цифры для поля day-of-month.
  • Пробел
  • Трёхбуквенное обозначение month-of-year на английском языке.
  • Пробел
  • Четыре цифры для поля year. Поддерживаются только годы в диапазоне от 0000 до 9999.
  • Пробел
  • Две цифры для поля hour-of-day. Значение дополняется нулём слева, чтобы получить две цифры.
  • Двоеточие
  • Две цифры для поля minute-of-hour. Значение дополняется нулём слева, чтобы получить две цифры.
  • Если секунды недоступны, переходите к следующему пробелу.
  • Двоеточие
  • Две цифры для поля second-of-minute. Значение дополняется нулём слева, чтобы получить две цифры.
  • Пробел
  • offset ID без двоеточий и секунд. Для нулевого смещения используется "GMT". Названия североамериканских часовых поясов и военных часовых поясов не обрабатываются.

При разборе регистр символов не учитывается.

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

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

ofPattern

public static DateTimeFormatter ofPattern(String pattern)
Создаёт форматтер с использованием указанного шаблона.

Этот метод создаёт форматтер на основе простого шаблона из букв и символов, описанного в документации класса. Например, d MMM uuuu отформатирует 2011-12-03 как '3 Dec 2011'.

Форматтер будет использовать default FORMAT locale. Это можно изменить с помощью withLocale(Locale) для возвращённого форматтера. Также можно использовать вариант этого метода ofPattern(String, Locale).

Возвращаемый форматтер не переопределяет хронологию или часовой пояс. Он использует стиль разрешения SMART.

Параметры:
pattern — используемый шаблон, не null
Возвращает:
форматтер, созданный на основе шаблона, не null
Исключения:
IllegalArgumentException — если шаблон недопустим
См. также:
  • DateTimeFormatterBuilder.appendPattern(String)

ofPattern

public static DateTimeFormatter ofPattern(String pattern, Locale locale)
Создаёт форматтер с использованием указанного шаблона и локали.

Этот метод создаёт форматтер на основе простого шаблона из букв и символов, описанного в документации класса. Например, d MMM uuuu отформатирует 2011-12-03 как '3 Dec 2011'.

Форматтер будет использовать указанную локаль. Её можно изменить с помощью withLocale(Locale) для возвращённого форматтера.

Возвращаемый форматтер не переопределяет хронологию или часовой пояс. Он использует стиль разрешения SMART.

Параметры:
pattern — используемый шаблон, не null
locale — используемая локаль, не null
Возвращает:
форматтер, созданный на основе шаблона, не null
Исключения:
IllegalArgumentException — если шаблон недопустим
См. также:
  • DateTimeFormatterBuilder.appendPattern(String)

ofLocalizedDate

public static DateTimeFormatter ofLocalizedDate(FormatStyle dateStyle)
Возвращает формат даты, зависящий от локали, для хронологии ISO.

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

Локаль определяется форматтером. Форматтер, непосредственно возвращаемый этим методом, использует default FORMAT locale. Локаль можно задать с помощью withLocale(Locale) для результата этого метода.

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

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

Параметры:
dateStyle — требуемый стиль форматтера, не null
Возвращает:
форматтер даты, не null

ofLocalizedTime

public static DateTimeFormatter ofLocalizedTime(FormatStyle timeStyle)
Возвращает формат времени, зависящий от локали, для хронологии ISO.

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

Локаль определяется форматтером. Форматтер, непосредственно возвращаемый этим методом, использует default FORMAT locale. Локаль можно задать с помощью withLocale(Locale) для результата этого метода.

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

Возвращаемый форматтер использует хронологию ISO, чтобы даты в других календарных системах преобразовывались правильно. Он не переопределяет часовой пояс и использует стиль разрешения SMART. Для стилей FULL и LONG обычно требуется часовой пояс. При форматировании с использованием этих стилей должен быть доступен ZoneId, заданный с помощью ZonedDateTime или withZone(ZoneId).

Параметры:
timeStyle — требуемый стиль форматтера, не null
Возвращает:
форматтер времени, не null

ofLocalizedDateTime

public static DateTimeFormatter ofLocalizedDateTime(FormatStyle dateTimeStyle)
Возвращает форматтер даты и времени, зависящий от локали, для хронологии ISO.

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

Локаль определяется форматтером. Форматтер, непосредственно возвращаемый этим методом, использует default FORMAT locale. Локаль можно задать с помощью withLocale(Locale) для результата этого метода.

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

Возвращаемый форматтер использует хронологию ISO, чтобы даты в других календарных системах преобразовывались правильно. Он не переопределяет часовой пояс и использует стиль разрешения SMART. Для стилей FULL и LONG обычно требуется часовой пояс. При форматировании с использованием этих стилей должен быть доступен ZoneId, заданный с помощью ZonedDateTime или withZone(ZoneId).

Параметры:
dateTimeStyle — требуемый стиль форматтера, не null
Возвращает:
форматтер даты и времени, не null

ofLocalizedDateTime

public static DateTimeFormatter ofLocalizedDateTime(FormatStyle dateStyle, FormatStyle timeStyle)
Возвращает формат даты и времени, зависящий от локали, для хронологии ISO.

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

Локаль определяется форматтером. Форматтер, непосредственно возвращаемый этим методом, использует default FORMAT locale. Локаль можно задать с помощью withLocale(Locale) для результата этого метода.

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

Возвращаемый форматтер использует хронологию ISO, чтобы даты в других календарных системах преобразовывались правильно. Он не переопределяет часовой пояс и использует стиль разрешения SMART. Для стилей FULL и LONG обычно требуется часовой пояс. При форматировании с использованием этих стилей должен быть доступен ZoneId, заданный с помощью ZonedDateTime или withZone(ZoneId).

Параметры:
dateStyle — требуемый стиль форматтера даты, не null
timeStyle — требуемый стиль форматтера времени, не null
Возвращает:
форматтер даты, времени или даты и времени, не null

ofLocalizedPattern

public static DateTimeFormatter ofLocalizedPattern(String requestedTemplate)
Создает зависящий от локали форматтер для ISO-хронологии на основе запрошенного шаблона. Запрошенный шаблон представляет собой последовательность типичных символов шаблона в каноническом порядке — от наибольшей единицы даты или времени к наименьшей. Его можно описать следующим регулярным выражением:
     "G{0,5}" +        // Era
     "y*" +            // Year
     "Q{0,5}" +        // Quarter
     "M{0,5}" +        // Month
     "w*" +            // Week of Week Based Year
     "E{0,5}" +        // Day of Week
     "d{0,2}" +        // Day of Month
     "B{0,5}" +        // Period/AmPm of Day
     "[hHjC]{0,2}" +   // Hour of Day/AmPm (refer to LDML for 'j' and 'C')
     "m{0,2}" +        // Minute of Hour
     "s{0,2}" +        // Second of Minute
     "[vz]{0,4}"       // Zone
Все символы шаблона являются необязательными, и каждый символ шаблона представляет поле; например, «M» представляет поле месяца. Количество букв символа шаблона определяет способ представления, например «число» или «текст», как описано в разделе Шаблоны форматирования и разбора. Другие символы шаблона в запрошенном шаблоне недопустимы.

Сопоставление запрошенного шаблона с наиболее близким из доступных локализованных форматов определено в спецификации Unicode LDML. Например, форматтер, созданный по запрошенному шаблону yMMM, преобразует дату '2020-06-16' в 'Jun 2020' для US locale.

Локаль определяется форматтером. Форматтер, непосредственно возвращаемый этим методом, использует default FORMAT locale. Локаль можно задать с помощью withLocale(Locale) для результата этого метода.

Возвращаемый форматтер не имеет переопределенной зоны. Он использует стиль разрешения SMART.

Параметры:
requestedTemplate — запрошенный шаблон, не null
Возвращает:
форматтер на основе шаблона requestedTemplate, не null
Исключения:
IllegalArgumentException — если requestedTemplate недопустим
Начиная с версии:
19
Внешние спецификации
  • Язык разметки данных локалей Unicode (LDML)
См. также:
  • ofPattern(String)

parsedExcessDays

public static final TemporalQuery<Period> parsedExcessDays()
Запрос для доступа к избыточным дням, полученным при разборе.

Возвращает singleton-запрос, предоставляющий доступ к дополнительной информации о разборе. Запрос всегда возвращает ненулевой период; вместо null возвращается нулевой период.

Есть две ситуации, в которых этот запрос может вернуть ненулевой период.

  • Если ResolverStyle имеет значение LENIENT и время разбирается без даты, полный результат разбора состоит из LocalTime и избыточного Period в днях.
  • Если ResolverStyle имеет значение SMART и время разбирается без даты, причем время равно 24:00:00, полный результат разбора состоит из LocalTime со значением 00:00:00 и избыточного Period длительностью один день.

В обоих случаях, если разбирается полная дата ChronoLocalDateTime или Instant, избыточные дни добавляются к части даты. В результате этот запрос вернет нулевой период.

Поведение SMART обрабатывает распространенное значение «конец дня» 24:00. Обработка в режиме LENIENT также дает тот же результат:

 Text to parse        Parsed object                         Excess days
 "2012-12-03T00:00"   LocalDateTime.of(2012, 12, 3, 0, 0)   ZERO
 "2012-12-03T24:00"   LocalDateTime.of(2012, 12, 4, 0, 0)   ZERO
 "00:00"              LocalTime.of(0, 0)                    ZERO
 "24:00"              LocalTime.of(0, 0)                    Period.ofDays(1)
Запрос можно использовать следующим образом:
 TemporalAccessor parsed = formatter.parse(str);
 LocalTime time = parsed.query(LocalTime::from);
 Period extraDays = parsed.query(DateTimeFormatter.parsedExcessDays());
Возвращает:
запрос, предоставляющий доступ к избыточным дням, полученным при разборе

parsedLeapSecond

public static final TemporalQuery<Boolean> parsedLeapSecond()
Запрос для определения того, был ли разобран високосный секундный интервал.

Возвращает singleton-запрос, предоставляющий доступ к дополнительной информации о разборе. Запрос всегда возвращает ненулевое логическое значение: true, если при разборе был обнаружен високосный секундный интервал, и false в противном случае.

При разборе момента времени обрабатывается особое время «високосной секунды» — '23:59:60'. Високосные секунды наступают в '23:59:60' в часовом поясе UTC, но в других часовых поясах — в другое местное время. Чтобы избежать возможной неоднозначности, обработка високосных секунд ограничена методом DateTimeFormatterBuilder.appendInstant(), поскольку этот метод всегда разбирает момент времени со смещением часового пояса UTC.

Если получено время '23:59:60', выполняется простое преобразование: секунды минуты со значением 60 заменяются на 59. Этот запрос можно применить к результату разбора, чтобы определить, была ли выполнена корректировка високосной секунды. Запрос вернет true, если значение было скорректировано для удаления високосной секунды, и false в противном случае. Обратите внимание, что применение механизма сглаживания високосных секунд, например UTC-SLS, является обязанностью приложения:

 TemporalAccessor parsed = formatter.parse(str);
 Instant instant = parsed.query(Instant::from);
 if (parsed.query(DateTimeFormatter.parsedLeapSecond())) {
   // validate leap-second is correct and apply correct smoothing
 }
Возвращает:
запрос, позволяющий определить, был ли разобран високосный секундный интервал

getLocale

public Locale getLocale()
Возвращает локаль, используемую при форматировании.

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

Возвращает:
локаль этого форматтера, не null

withLocale

public DateTimeFormatter withLocale(Locale locale)
Возвращает копию этого форматтера с новой локалью.

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

Локаль сохраняется в переданном виде, без дополнительной обработки. Если локаль содержит расширения Unicode, они могут использоваться при последующей обработке текста. Чтобы задать хронологию, часовой пояс и десятичный стиль из расширений Unicode, см. localizedBy().

Этот экземпляр неизменяем, и вызов данного метода на него не влияет.

Параметры:
locale — новая локаль, не null
Возвращает:
форматтер на основе этого форматтера с запрошенной локалью, не null
См. также:
  • localizedBy(Locale)

localizedBy

public DateTimeFormatter localizedBy(Locale locale)
Возвращает копию этого форматтера с локализованными значениями локали, календаря, региона, десятичного стиля и/или часового пояса, которые имеют приоритет над значениями этого форматтера.

Метод используется для поиска элементов форматтера, требующих локализации, например текста или локализованного шаблона. Если локаль содержит расширения Unicode "ca" (календарь), "nu" (система счисления), "rg" (переопределение региона) и/или "tz" (часовой пояс), переопределяются хронология, система счисления и/или зона. Если указаны оба расширения — "ca" и "rg", хронология из расширения "ca" имеет приоритет над неявно заданной расширением "rg". То же относится к расширению "nu".

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

Этот экземпляр неизменяем, и вызов данного метода на него не влияет.

Параметры:
locale — локаль, не null
Возвращает:
форматтер на основе этого форматтера с локализованными значениями календаря, десятичного стиля и/или часового пояса, которые имеют приоритет над значениями этого форматтера.
Начиная с версии:
10
См. также:
  • withLocale(Locale)

getDecimalStyle

public DecimalStyle getDecimalStyle()
Возвращает DecimalStyle, используемый при форматировании.
Возвращает:
DecimalStyle этого форматтера, не null

withDecimalStyle

public DateTimeFormatter withDecimalStyle(DecimalStyle decimalStyle)
Возвращает копию этого форматтера с новым DecimalStyle.

Этот экземпляр неизменяем, и вызов данного метода на него не влияет.

Параметры:
decimalStyle — новый DecimalStyle, не null
Возвращает:
форматтер на основе этого форматтера с запрошенным DecimalStyle, не null

getChronology

public Chronology getChronology()
Возвращает переопределяющую хронологию, используемую при форматировании.

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

Возвращает:
переопределенная хронология этого форматтера или null, если переопределение отсутствует

withChronology

public DateTimeFormatter withChronology(Chronology chrono)
Возвращает копию этого форматтера с новой переопределяющей хронологией.

Возвращает форматтер с состоянием, аналогичным состоянию этого форматтера, но с заданной переопределяющей хронологией. По умолчанию форматтер не имеет переопределенной хронологии и возвращает null.

Добавление переопределения влияет на любую форматируемую или разбираемую дату.

При форматировании, если временной объект содержит дату, она будет преобразована в дату переопределяющей хронологии. Наличие даты во временном объекте определяется путем запроса поля EPOCH_DAY. Любые значения времени или зоны сохраняются без изменений, если они не переопределены.

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

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

Этот экземпляр неизменяем, и вызов данного метода на него не влияет.

Параметры:
chrono — новая хронология или null, если переопределение отсутствует
Возвращает:
форматтер на основе этого форматтера с запрошенной переопределяющей хронологией, не null

getZone

public ZoneId getZone()
Возвращает переопределяющую зону, используемую при форматировании.

Возвращает переопределенную зону, используемую для преобразования моментов времени. По умолчанию форматтер не имеет переопределенной зоны и возвращает null. Дополнительные сведения о переопределении см. в разделе withZone(ZoneId).

Возвращает:
переопределенная зона этого форматтера или null, если переопределение отсутствует

withZone

public DateTimeFormatter withZone(ZoneId zone)
Возвращает копию этого форматтера с новой переопределяющей зоной.

Возвращает форматтер с состоянием, аналогичным состоянию этого форматтера, но с заданной переопределяющей зоной. По умолчанию форматтер не имеет переопределенной зоны и возвращает null.

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

При форматировании, если временной объект содержит момент времени, он будет преобразован в дату-время с часовым поясом с использованием переопределяющей зоны. Наличие момента времени во временном объекте определяется путем запроса поля INSTANT_SECONDS. Если входные данные содержат хронологию, она сохраняется, если не переопределена. Если входные данные не содержат хронологию, например Instant, используется ISO-хронология.

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

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

Этот экземпляр неизменяем, и вызов данного метода на него не влияет.

Параметры:
zone — новая переопределяющая зона или null, если переопределение отсутствует
Возвращает:
форматтер на основе этого форматтера с запрошенной переопределяющей зоной, не null

getResolverStyle

public ResolverStyle getResolverStyle()
Возвращает стиль разрешения, используемый при разборе.

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

Возвращает:
стиль разрешения этого форматтера, не null

withResolverStyle

public DateTimeFormatter withResolverStyle(ResolverStyle resolverStyle)
Возвращает копию этого форматтера с новым стилем разрешения.

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

Изменение стиля разрешения влияет только на разбор. Разбор текстовой строки выполняется в два этапа. На первом этапе выполняется базовый разбор текста согласно полям, добавленным в построитель. На втором этапе разобранные пары «поле — значение» преобразуются в объекты даты и/или времени. Стиль разрешения определяет, как выполняется второй этап — разрешение. Дополнительные сведения о доступных параметрах см. в разделе ResolverStyle.

Этот экземпляр неизменяем, и вызов данного метода на него не влияет.

Параметры:
resolverStyle — новый стиль разрешения, не null
Возвращает:
форматтер на основе этого форматтера с запрошенным стилем разрешения, не null

getResolverFields

public Set<TemporalField> getResolverFields()
Возвращает поля разрешения, используемые при разборе.

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

Возвращает:
неизменяемый набор полей разрешения этого форматтера или null, если полей нет

withResolverFields

public DateTimeFormatter withResolverFields(TemporalField... resolverFields)
Возвращает копию этого форматтера с новым набором полей разрешения.

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

Изменение полей разрешения влияет только на разбор. Разбор текстовой строки выполняется в два этапа. На первом этапе выполняется базовый разбор текста согласно полям, добавленным в построитель. На втором этапе разобранные пары «поле — значение» преобразуются в объекты даты и/или времени. Поля разрешения используются для фильтрации пар «поле — значение» между первым и вторым этапами.

Это можно использовать для выбора одного из двух или более способов разрешения даты или времени. Например, если форматтер включает год, месяц, день месяца и день года, дату можно разрешить двумя способами. Вызов этого метода с аргументами YEAR и DAY_OF_YEAR обеспечит разрешение даты с использованием года и дня года; это означает, что месяц и день месяца будут игнорироваться на этапе разрешения.

Аналогичным образом этот метод можно использовать, чтобы игнорировать второстепенные поля, которые иначе подвергались бы перекрестной проверке. Например, если форматтер включает год, месяц, день месяца и день недели, дату можно разрешить только одним способом, но разобранное значение дня недели будет сверяться с разрешенной датой. Вызов этого метода с аргументами YEAR, MONTH_OF_YEAR и DAY_OF_MONTH обеспечит правильное разрешение даты без перекрестной проверки дня недели.

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

Этот экземпляр неизменяем, и вызов данного метода на него не влияет.

Параметры:
resolverFields — новый набор полей разрешения или null, если полей нет
Возвращает:
форматтер на основе этого форматтера с запрошенным стилем разрешения, не null

withResolverFields

public DateTimeFormatter withResolverFields(Set<TemporalField> resolverFields)
Возвращает копию этого форматтера с новым набором полей разрешения.

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

Изменение полей разрешения влияет только на разбор. Разбор текстовой строки выполняется в два этапа. На первом этапе выполняется базовый разбор текста согласно полям, добавленным в построитель. На втором этапе разобранные пары «поле — значение» преобразуются в объекты даты и/или времени. Поля разрешения используются для фильтрации пар «поле — значение» между первым и вторым этапами.

Это можно использовать для выбора одного из двух или более способов разрешения даты или времени. Например, если форматтер включает год, месяц, день месяца и день года, дату можно разрешить двумя способами. Вызов этого метода с аргументами YEAR и DAY_OF_YEAR обеспечит разрешение даты с использованием года и дня года; это означает, что месяц и день месяца будут игнорироваться на этапе разрешения.

Аналогичным образом этот метод можно использовать, чтобы игнорировать второстепенные поля, которые иначе подвергались бы перекрестной проверке. Например, если форматтер включает год, месяц, день месяца и день недели, дату можно разрешить только одним способом, но разобранное значение дня недели будет сверяться с разрешенной датой. Вызов этого метода с аргументами YEAR, MONTH_OF_YEAR и DAY_OF_MONTH обеспечит правильное разрешение даты без перекрестной проверки дня недели.

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

Этот экземпляр неизменяем, и вызов данного метода на него не влияет.

Параметры:
resolverFields — новый набор полей разрешения или null, если полей нет
Возвращает:
форматтер на основе этого форматтера с запрошенным стилем разрешения, не null

format

public String format(TemporalAccessor temporal)
Форматирует объект даты и времени с помощью этого форматтера.

Форматирует дату и время в строку согласно правилам форматтера.

Параметры:
temporal — временной объект для форматирования, не null
Возвращает:
отформатированную строку, не null
Исключения:
DateTimeException — если при форматировании произошла ошибка

formatTo

public void formatTo(TemporalAccessor temporal, Appendable appendable)
Форматирует объект даты и времени в Appendable с помощью этого форматтера.

Записывает отформатированные дату и время в указанный объект назначения. Appendable — это универсальный интерфейс, реализуемый всеми основными классами для вывода символьных данных, включая StringBuffer, StringBuilder, PrintStream и Writer.

Хотя методы Appendable выбрасывают IOException, этот метод этого не делает. Вместо этого любой IOException оборачивается в исключение времени выполнения.

Параметры:
temporal — временной объект для форматирования, не null
appendable — объект Appendable, в который выполняется форматирование, не null
Исключения:
DateTimeException — если при форматировании произошла ошибка

parse

public TemporalAccessor parse(CharSequence text)
Полностью разбирает текст, создавая временной объект.

Разбирает весь текст и создает временной объект. Обычно удобнее использовать parse(CharSequence, TemporalQuery). Результатом этого метода является TemporalAccessor, которое прошло разрешение с применением базовых проверок, помогающих убедиться в корректности даты и времени.

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

Параметры:
text — текст для разбора, не null
Возвращает:
разобранный временной объект, не null
Исключения:
DateTimeParseException — если не удалось разобрать запрошенный результат

parse

public TemporalAccessor parse(CharSequence text, ParsePosition position)
Разбирает текст с помощью этого форматтера, позволяя управлять позицией в тексте.

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

Разбор текста начинается с указанной начальной ParsePosition. Разбирать весь текст целиком не требуется; ParsePosition будет обновлена и укажет индекс в конце разобранного фрагмента.

Этот метод работает несколько иначе, чем аналогичные методы, использующие ParsePosition в java.text.Format. Этот класс сообщает об ошибках с помощью индекса ошибки в ParsePosition. В отличие от него, этот метод при возникновении ошибки выбрасывает DateTimeParseException, содержащее индекс ошибки. Такое изменение поведения необходимо из-за большей сложности разбора и разрешения дат и времени в этом API.

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

Параметры:
text — текст для разбора, не null
position — позиция начала разбора; обновляется с указанием длины разобранного фрагмента и индекса любой ошибки, не null
Возвращает:
разобранный временной объект, не null
Исключения:
DateTimeParseException — если не удалось разобрать запрошенный результат
IndexOutOfBoundsException — если позиция недопустима

parse

public <T> T parse(CharSequence text, TemporalQuery<T> query)
Полностью разбирает текст, создавая объект указанного типа.

В большинстве приложений для разбора следует использовать этот метод. Он разбирает весь текст и создает требуемую дату и время. Запрос обычно является ссылкой на метод from(TemporalAccessor). Например:

 LocalDateTime dt = parser.parse(str, LocalDateTime::from);
Если разбор завершается, не считав весь текст, или во время разбора либо объединения возникает проблема, выбрасывается исключение.
Параметры типа:
T — тип разобранной даты и времени
Параметры:
text — текст для разбора, не null
query — запрос, определяющий тип результата разбора, не null
Возвращает:
разобранную дату и время, не null
Исключения:
DateTimeParseException — если не удалось разобрать запрошенный результат

parseBest

public TemporalAccessor parseBest(CharSequence text, TemporalQuery<?>... queries)
Полностью разбирает текст, создавая объект одного из указанных типов.

Этот метод разбора удобен, если парсер поддерживает необязательные элементы. Например, шаблон 'uuuu-MM-dd HH.mm[ VV]' может быть полностью разобран в ZonedDateTime или частично — в LocalDateTime. Запросы необходимо указывать в порядке убывания предпочтительности: сначала вариант наиболее полного разбора, затем вариант минимального разбора. Запрос обычно является ссылкой на метод from(TemporalAccessor).

Результат относится к первому типу, который удалось успешно разобрать. Обычно приложения используют instanceof для проверки результата. Например:

 TemporalAccessor dt = parser.parseBest(str, ZonedDateTime::from, LocalDateTime::from);
 if (dt instanceof ZonedDateTime) {
  ...
 } else {
  ...
 }
Если разбор завершается, не считав весь текст, или во время разбора либо объединения возникает проблема, выбрасывается исключение.
Параметры:
text — текст для разбора, не null
queries — запросы, определяющие типы, которые следует попытаться получить при разборе; должны реализовывать TemporalAccessor, не null
Возвращает:
разобранные дату и время, не null
Исключения:
IllegalArgumentException — если указано менее двух типов
DateTimeParseException — если не удалось разобрать запрошенный результат

parseUnresolved

public TemporalAccessor parseUnresolved(CharSequence text, ParsePosition position)
Разбирает текст с помощью этого форматтера, не разрешая результат; предназначен для сложных случаев использования.

Разбор выполняется в два этапа. Сначала текст разбирается с использованием структуры, заданной форматтером, в результате чего создаются Map «поле — значение», ZoneId и Chronology. Затем разобранные данные разрешаются: различные поля проверяются, объединяются и упрощаются до более полезных. Этот метод выполняет этап разбора, но не этап разрешения.

Результатом этого метода является TemporalAccessor, представляющий данные в том виде, в каком они присутствуют во входных данных. Значения не проверяются, поэтому разбор строки даты '2012-00-65' приведёт к созданию временного объекта с тремя полями: годом '2012', месяцем '0' и днём месяца '65'.

Текст будет разобран начиная с указанной начальной позиции ParsePosition. Весь текст разбирать необязательно: ParsePosition будет обновлён индексом, указывающим конец разбора.

Ошибки возвращаются в поле индекса ошибки объекта ParsePosition, а не через DateTimeParseException. Возвращаемый индекс ошибки будет установлен в значение, указывающее на место ошибки. Перед использованием результата вызывающий код должен проверить наличие ошибок.

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

Этот метод предназначен для сложных случаев использования, в которых требуется доступ к внутреннему состоянию во время разбора. В обычном прикладном коде следует использовать parse(CharSequence, TemporalQuery) или метод разбора целевого типа.

Параметры:
text — текст для разбора, не null
position — позиция, с которой начинается разбор; обновляется с учётом длины разобранного текста и индекса любой ошибки, не null
Возвращает:
разобранный текст; null, если при разборе возникла ошибка
Выбрасывает:
DateTimeException — если во время разбора возникла проблема
IndexOutOfBoundsException — если позиция недопустима

toFormat

public Format toFormat()
Возвращает этот форматтер как экземпляр java.text.Format.

Возвращаемый экземпляр Format форматирует любой TemporalAccessor и разбирает текст в разрешённый TemporalAccessor.

Исключения соответствуют определениям Format; подробные сведения о IllegalArgumentException при форматировании и о ParseException или null при разборе см. в описании этих методов. Формат не поддерживает назначение атрибутов возвращаемой строке форматирования.

Возвращает:
этот форматтер в виде экземпляра классического формата, не null

toFormat

public Format toFormat(TemporalQuery<?> parseQuery)
Возвращает этот форматтер как экземпляр java.text.Format, который выполняет разбор с помощью указанного запроса.

Возвращаемый экземпляр Format форматирует любой TemporalAccessor и разбирает текст в указанный тип. Тип должен поддерживаться методом parse(CharSequence).

Исключения соответствуют определениям Format; подробные сведения о IllegalArgumentException при форматировании и о ParseException или null при разборе см. в описании этих методов. Формат не поддерживает назначение атрибутов возвращаемой строке форматирования.

Параметры:
parseQuery — запрос, определяющий тип для разбора, не null
Возвращает:
этот форматтер в виде экземпляра классического формата, не null

toString

public String toString()
Возвращает описание базовых форматтеров.
Переопределяет:
toString в классе Object
Возвращает:
описание этого форматтера, не null

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её дочерних компаний в США и других странах.
Авторские права © 1993, 2026, Oracle и/или её дочерние компании, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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