Spec-Zone.ru › OpenJDK 24

Класс SimpleDateFormat

java.lang.Object
java.text.Format
java.text.DateFormat
java.text.SimpleDateFormat
Все реализуемые интерфейсы:
Serializable, Cloneable
public class SimpleDateFormat extends DateFormat
SimpleDateFormat — это конкретный класс для форматирования и парсинга дат с учётом локали. Он позволяет форматировать (дата → текст), парсить (текст → дата) и нормализовать данные.

SimpleDateFormat позволяет начать с выбора любых пользовательских шаблонов для форматирования даты и времени. Однако рекомендуется создавать форматировщик даты и времени, используя либо getTimeInstance, либо getDateInstance, либо getDateTimeInstance в DateFormat. Каждый из этих методов класса может вернуть форматировщик даты/времени, инициализированный с шаблоном по умолчанию. Вы можете изменить шаблон форматирования, используя методы applyPattern по своему усмотрению. Дополнительную информацию об использовании этих методов см. в DateFormat.

Шаблоны дат и времени

Форматы дат и времени задаются строками шаблонов дат и времени. В строках шаблонов дат и времени нецитируемые буквы от 'A' до 'Z' и от 'a' до 'z' интерпретируются как символы шаблона, представляющие компоненты строки даты или времени. Текст можно цитировать с помощью одинарных кавычек (') для предотвращения интерпретации. "''" представляет собой одиночную кавычку. Все остальные символы не интерпретируются; они просто копируются в строку вывода при форматировании или сопоставляются со строкой ввода при парсинге.

Определены следующие символы шаблона (все остальные символы от 'A' до 'Z' и от 'a' до 'z' зарезервированы):

Таблица показывает символы шаблона, компонент даты/времени, представление и примеры.
Символ Компонент даты или времени Представление Примеры
G Обозначение эры Текст AD
y Год Год 1996; 96
Y Год недели Год 2009; 09
M Месяц в году (зависит от контекста) Месяц July; Jul; 07
L Месяц в году (в самостоятельной форме) Месяц July; Jul; 07
w Неделя в году Число 27
W Неделя в месяце Число 2
D День в году Число 189
d День в месяце Число 10
F День недели в месяце Число 2
E Название дня недели Текст Tuesday; Tue
u Номер дня недели (1 = понедельник, ..., 7 = воскресенье) Число 1
a Маркер AM/PM Текст PM
H Час в сутках (0-23) Число 0
k Час в сутках (1-24) Число 24
K Час в формате AM/PM (0-11) Число 0
h Час в формате AM/PM (1-12) Число 12
m Минута в часе Число 30
s Секунда в минуте Число 55
S Миллисекунда Число 978
z Временная зона Общая временная зона Pacific Standard Time; PST; GMT-08:00
Z Временная зона Временная зона RFC 822 -0800
X Временная зона Временная зона ISO 8601 -08; -0800; -08:00
Символы шаблона обычно повторяются, так как их количество определяет точное представление:
END_OF_DOCUMENT_MARKER
  • Текст: Для форматирования, если количество символов шаблона равно 4 или больше, используется полная форма; в противном случае используется короткая или сокращенная форма, если доступна. Для парсинга принимаются обе формы, независимо от количества символов шаблона.

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

  • Год: Если календарь форматировщика Calendar является григорианским календарем, применяются следующие правила.
    • Для форматирования, если количество символов шаблона равно 2, год усекается до 2 цифр; в противном случае он интерпретируется как число.
    • Для парсинга, если количество символов шаблона больше 2, год интерпретируется буквально, независимо от количества цифр. Поэтому, используя шаблон "MM/dd/yyyy", "01/11/12" парсится как 11 января 12 года н.э.
    • При парсинге с использованием сокращенного шаблона года ("y" или "yy"), SimpleDateFormat должен интерпретировать сокращенный год относительно какого-то столетия. Он делает это, корректируя даты, чтобы они находились в пределах 80 лет до и 20 лет после момента создания экземпляра SimpleDateFormat. Например, используя шаблон "MM/dd/yy" и экземпляр SimpleDateFormat, созданный 1 января 1997 года, строка "01/11/12" будет интерпретирована как 11 января 2012 года, а строка "05/04/64" — как 4 мая 1964 года. Во время парсинга только строки, состоящие ровно из двух цифр, как определено в Character.isDigit(char), будут обработаны в качестве годов текущего столетия. Любая другая числовая строка, например, строка из одной цифры, строка из трёх или более цифр, или строка из двух цифр, которая не состоит только из цифр (например, "-1"), интерпретируется буквально. Таким образом, "01/02/3" или "01/02/003" при использовании того же шаблона парсятся как 2 января 3 года н.э. Аналогично, "01/02/-3" парсится как 2 января 4 года до н.э.
    В противном случае применяются формы, специфичные для системы календаря. Как для форматирования, так и для парсинга, если количество символов шаблона равно 4 или больше, используется специфичная для календаря полная форма. В противном случае используется специфичная для календаря короткая или сокращенная форма.

    Если указан год недели 'Y', и календарь календарь не поддерживает какие-либо годы недели, используется год календаря ('y') вместо него. Поддержка годов недели может быть проверена вызовом getCalendar().isWeekDateSupported().

  • Месяц: Если количество символов шаблона равно 3 или больше, месяц интерпретируется как текст; в противном случае он интерпретируется как число.
    • Символ M создает контекстно-зависимые имена месяцев, такие как встроенные формы имён. Символ M является контекстно-зависимым в том смысле, что когда он используется в отдельном шаблоне, например, "MMMM", он даёт отдельный вид имени месяца, а когда он используется в шаблоне, содержащем другие поля, например, "d MMMM", он даёт формализованный вид имени месяца. Например, январь на каталонском языке — "de gener" в формализованной форме, а "gener" — в отдельной форме. В этом случае "MMMM" даст "gener", а месячная часть "d MMMM" — "de gener". Если DateFormatSymbols был задан явно с помощью конструктора SimpleDateFormat(String,DateFormatSymbols) или метода setDateFormatSymbols(DateFormatSymbols), используются имена месяцев, заданные DateFormatSymbols.
    • Символ L создаёт отдельный вид имён месяцев.

  • Общий часовой пояс: Часовые пояса интерпретируются как текст, если у них есть имена. Для часовых поясов, представляющих значение смещения от GMT, используется следующий синтаксис:
         GMTOffsetTimeZone:
                 GMT Sign Hours : Minutes
         Sign: one of
                 + -
         Hours:
                 Digit
                 Digit Digit
         Minutes:
                 Digit Digit
         Digit: one of
                 0 1 2 3 4 5 6 7 8 9
    Часы должны быть в диапазоне от 0 до 23, а Минуты — от 00 до 59. Формат независим от локали, а цифры должны быть взяты из блока Basic Latin стандарта Unicode.

    Для парсинга также принимаются часовые пояса RFC 822.

  • Часовой пояс RFC 822: Для форматирования используется формат часового пояса RFC 822 с 4 цифрами:
         RFC822TimeZone:
                 Sign TwoDigitHours Minutes
         TwoDigitHours:
                 Digit Digit
    TwoDigitHours должны быть в диапазоне от 00 до 23. Другие определения аналогичны определениям для общих часовых поясов.

    Для парсинга также принимаются общие часовые пояса.

  • Часовой пояс ISO 8601: Количество символов шаблона определяет формат как для форматирования, так и для парсинга следующим образом:
         ISO8601TimeZone:
                 OneLetterISO8601TimeZone
                 TwoLetterISO8601TimeZone
                 ThreeLetterISO8601TimeZone
         OneLetterISO8601TimeZone:
                 Sign TwoDigitHours
                 Z
         TwoLetterISO8601TimeZone:
                 Sign TwoDigitHours Minutes
                 Z
         ThreeLetterISO8601TimeZone:
                 Sign TwoDigitHours : Minutes
                 Z
    Другие определения аналогичны определениям для общих часовых поясов или часовых поясов RFC 822.

    Для форматирования, если значение смещения от GMT равно 0, "Z" выводится. Если количество символов шаблона равно 1, любая дробная часть часа игнорируется. Например, если шаблон — "X", а часовой пояс — "GMT+05:30", выводится "+05".

    Для парсинга "Z" парсится как обозначение часового пояса UTC. Общие часовые пояса не принимаются.

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

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

Примеры

Следующие примеры демонстрируют, как шаблоны даты и времени интерпретируются в локали США. Указанная дата и время — 2001-07-04 12:08:56 по местному времени в часовом поясе Тихоокеанское время США.
Примеры шаблонов дат и времени, интерпретированных в локали США
Шаблон даты и времени Результат
"yyyy.MM.dd G 'at' HH:mm:ss z" 2001.07.04 AD at 12:08:56 PDT
"EEE, MMM d, ''yy" Wed, Jul 4, '01
"h:mm a" 12:08 PM
"hh 'o''clock' a, zzzz" 12 o'clock PM, Pacific Daylight Time
"K:mm a, z" 0:08 PM, PDT
"yyyyy.MMMMM.dd GGG hh:mm aaa" 02001.July.04 AD 12:08 PM
"EEE, d MMM yyyy HH:mm:ss Z" Wed, 4 Jul 2001 12:08:56 -0700
"yyMMddHHmmssZ" 010704120856-0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ" 2001-07-04T12:08:56.235-0700
"yyyy-MM-dd'T'HH:mm:ss.SSSXXX" 2001-07-04T12:08:56.235-07:00
"YYYY-'W'ww-u" 2001-W27-3

Синхронизация

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

Примечание API:
Рассмотрите использование DateTimeFormatter в качестве неизменяемой и потокобезопасной альтернативы.
С:
1.1
См. также:
  • Java Tutorial
  • Calendar
  • TimeZone
  • DateFormat
  • DateFormatSymbols
  • DateTimeFormatter
  • Serialized Form

Краткое описание вложенных классов

Вложенные классы/интерфейсы, объявленные в классе java.text.DateFormat

DateFormat.Field

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

Поля, объявленные в классе java.text.DateFormat

AM_PM_FIELD, calendar, DATE_FIELD, DAY_OF_WEEK_FIELD, DAY_OF_WEEK_IN_MONTH_FIELD, DAY_OF_YEAR_FIELD, DEFAULT, ERA_FIELD, FULL, HOUR_OF_DAY0_FIELD, HOUR_OF_DAY1_FIELD, HOUR0_FIELD, HOUR1_FIELD, LONG, MEDIUM, MILLISECOND_FIELD, MINUTE_FIELD, MONTH_FIELD, numberFormat, SECOND_FIELD, SHORT, TIMEZONE_FIELD, WEEK_OF_MONTH_FIELD, WEEK_OF_YEAR_FIELD, YEAR_FIELD

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

Конструктор Описание
SimpleDateFormat()
Создает объект SimpleDateFormat, используя шаблон по умолчанию и символы формата даты для локали по умолчанию FORMAT.
SimpleDateFormat(String pattern)
Создает объект SimpleDateFormat, используя заданный шаблон и символы формата даты по умолчанию для локали по умолчанию FORMAT.
SimpleDateFormat(String pattern, DateFormatSymbols formatSymbols)
Создает объект SimpleDateFormat, используя заданный шаблон и символы формата даты.
SimpleDateFormat(String pattern, Locale locale)
Создает объект SimpleDateFormat, используя заданный шаблон и символы формата даты по умолчанию для заданной локали.

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

Модификатор и тип Метод Описание
void applyLocalizedPattern(String pattern)
Применяет заданную локальную строку шаблона к этому формату даты.
void applyPattern(String pattern)
Применяет заданную строку шаблона к этому формату даты.
Object clone()
Создает копию этого объекта SimpleDateFormat.
boolean equals(Object obj)
Сравнивает указанный объект с этим объектом SimpleDateFormat на равенство.
StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition pos)
Форматирует заданный объект Date в строку даты/времени и добавляет результат к заданной строке StringBuffer.
AttributedCharacterIterator formatToCharacterIterator(Object obj)
Форматирует объект, создавая строку AttributedCharacterIterator.
Date get2DigitYearStart()
Возвращает начальную дату 100-летнего периода, в рамках которого интерпретируются двухзначные годы.
DateFormatSymbols getDateFormatSymbols()
Получает копию символов формата даты и времени этого формата даты.
int hashCode()
Возвращает значение хэш-кода для этого объекта SimpleDateFormat.
Date parse(String text, ParsePosition pos)
Разбирает текст из строки, чтобы получить объект Date.
void set2DigitYearStart(Date startDate)
Устанавливает 100-летний период, в котором будут интерпретироваться двухзначные годы, начиная с указанной даты.
void setDateFormatSymbols(DateFormatSymbols newFormatSymbols)
Устанавливает символы формата даты и времени этого формата даты.
String toLocalizedPattern()
Возвращает локальную строку шаблона, описывающую этот формат даты.
String toPattern()
Возвращает строку шаблона, описывающую этот формат даты.
String toString()
Возвращает строку, идентифицирующую этот объект SimpleDateFormat, для отладки.

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

format, format, getAvailableLocales, getCalendar, getDateInstance, getDateInstance, getDateInstance, getDateTimeInstance, getDateTimeInstance, getDateTimeInstance, getInstance, getNumberFormat, getTimeInstance, getTimeInstance, getTimeInstance, getTimeZone, isLenient, parse, parseObject, setCalendar, setLenient, setNumberFormat, setTimeZone

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

format, parseObject

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

finalize, getClass, notify, notifyAll, wait, wait, wait

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

SimpleDateFormat

public SimpleDateFormat()
Создаёт SimpleDateFormat, используя шаблон по умолчанию и символы формата даты для локального языка по умолчанию (FORMAT). Примечание: этот конструктор может не поддерживать все локали. Для полной поддержки используйте методы-фабрики в классе DateFormat.

SimpleDateFormat

public SimpleDateFormat(String pattern)
Создаёт SimpleDateFormat, используя заданный шаблон и символы формата даты для локального языка по умолчанию (FORMAT). Примечание: этот конструктор может не поддерживать все локали. Для полной поддержки используйте методы-фабрики в классе DateFormat.

Эквивалентно вызову SimpleDateFormat(pattern, Locale.getDefault(Locale.Category.FORMAT)).

Параметры:
pattern - шаблон, описывающий формат даты и времени
Исключения:
NullPointerException - если заданный шаблон равен null
IllegalArgumentException - если заданный шаблон некорректен
См. также:
  • Locale.getDefault(java.util.Locale.Category)
  • Locale.Category.FORMAT

SimpleDateFormat

public SimpleDateFormat(String pattern, Locale locale)
Создаёт SimpleDateFormat, используя заданный шаблон и символы формата даты для заданного локального языка. Примечание: этот конструктор может не поддерживать все локали. Для полной поддержки используйте методы-фабрики в классе DateFormat.
Параметры:
pattern - шаблон, описывающий формат даты и времени
locale - локальный язык, для которого должны быть использованы символы формата даты
Исключения:
NullPointerException - если заданный шаблон или локальный язык равны null
IllegalArgumentException - если заданный шаблон некорректен

SimpleDateFormat

public SimpleDateFormat(String pattern, DateFormatSymbols formatSymbols)
Создаёт SimpleDateFormat, используя заданный шаблон и символы формата даты.
Параметры:
pattern - шаблон, описывающий формат даты и времени
formatSymbols - символы формата даты, которые должны быть использованы для форматирования
Исключения:
NullPointerException - если заданный шаблон или formatSymbols равны null
IllegalArgumentException - если заданный шаблон некорректен

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

set2DigitYearStart

public void set2DigitYearStart(Date startDate)
Устанавливает 100-летний период, в котором 2-значные годы будут интерпретированы, начиная с указанной даты.
Параметры:
startDate - При парсинге двузначные годы будут помещены в диапазон startDate по startDate + 100 years.
Исключения:
NullPointerException - если startDate равно null.
С версии:
1.2
См. также:
  • get2DigitYearStart()

get2DigitYearStart

public Date get2DigitYearStart()
Возвращает начальную дату 100-летнего периода, в рамках которого интерпретируются двузначные годы.
Возвращает:
начало 100-летнего периода, в который парсятся двузначные годы
С версии:
1.2
См. также:
  • set2DigitYearStart(java.util.Date)

format

public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition pos)
Форматирует заданную Date в строку даты/времени и добавляет результат к заданному StringBuffer.
Определено в:
format в классе DateFormat
Параметры:
date - значение даты-времени, подлежащее форматированию в строку даты-времени.
toAppendTo - место, куда будет добавлен новый текст даты-времени.
pos - отслеживает позицию поля в возвращаемой строке. Например, для текста даты-времени "1996.07.10 AD at 15:08:56 PDT", если заданное fieldPosition равно DateFormat.YEAR_FIELD, начальный и конечный индексы fieldPosition будут установлены в 0 и 4 соответственно. Обратите внимание, что если одно и то же поле даты-времени появляется более одного раза в шаблоне, то fieldPosition будет установлено для первого появления этого поля даты-времени. Например, форматирование Date в строку даты-времени "1 PM PDT (Pacific Daylight Time)" с шаблоном "h a z (zzzz)" и полем выравнивания DateFormat.TIMEZONE_FIELD, начальный и конечный индексы fieldPosition будут установлены в 5 и 8 соответственно для первого появления символа шаблона часового пояса 'z'.
Возвращает:
отформатированная строка даты-времени.
Исключения:
NullPointerException - если какой-либо из параметров равен null.

formatToCharacterIterator

public AttributedCharacterIterator formatToCharacterIterator(Object obj)
Форматирует объект, создавая AttributedCharacterIterator. Вы можете использовать возвращённый AttributedCharacterIterator для построения результирующей строки, а также для получения информации о результирующей строке.

Каждый ключ атрибута AttributedCharacterIterator будет иметь тип DateFormat.Field, а соответствующее значение атрибута будет таким же, как ключ атрибута.

Переопределяет:
formatToCharacterIterator в классе Format
Параметры:
obj - объект для форматирования
Возвращает:
AttributedCharacterIterator, описывающий отформатированное значение.
Исключения:
NullPointerException - если obj равен null.
IllegalArgumentException - если формат не может отформатировать данный объект или если строка шаблона формата некорректна.
С версии:
1.4

parse

public Date parse(String text, ParsePosition pos)
Парсит текст из строки, чтобы получить Date.

Метод пытается распарсить текст, начиная с индекса, заданного в pos. Если парсинг успешен, то индекс pos обновляется до индекса после последнего используемого символа (парсинг не обязательно использует все символы до конца строки), и возвращается распарсенная дата. Обновлённый pos может использоваться для указания начальной точки для следующего вызова этого метода. Если произошла ошибка, то индекс pos не изменяется, индекс ошибки pos устанавливается в индекс символа, где произошла ошибка, и возвращается null.

Данная операция парсинга использует calendar для создания Date. Все поля даты и времени calendar очищаются перед парсингом, и для любых отсутствующих данных даты и времени используются значения по умолчанию для полей даты и времени calendar. Например, значение года распарсенного Date равно 1970 с GregorianCalendar, если значение года не задано результатом парсинга. Значение TimeZone может быть перезаписано в зависимости от заданного шаблона и значения часового пояса в text. Любое ранее заданное значение TimeZone вызовом setTimeZone может потребоваться восстановить для дальнейших операций.

Определено в:
parse в классе DateFormat
Параметры:
text - String, часть которого должна быть распарсена.
pos - объект ParsePosition с информацией об индексе и индексе ошибки, как описано выше.
Возвращает:
Date, распарсенный из строки. В случае ошибки возвращает null.
Исключения:
NullPointerException - если text или pos равны null.

toPattern

public String toPattern()
Возвращает строку шаблона, описывающую этот формат даты.
Возвращает:
строку шаблона, описывающую этот формат даты.

toLocalizedPattern

public String toLocalizedPattern()
Возвращает локальную строку шаблона, описывающую этот формат даты.
Возвращает:
локальную строку шаблона, описывающую этот формат даты.

applyPattern

public void applyPattern(String pattern)
Применяет заданную строку шаблона к этому формату даты.
Параметры:
pattern - новый шаблон даты и времени для этого формата даты
Исключения:
NullPointerException - если заданный шаблон равен null
IllegalArgumentException - если заданный шаблон некорректен

applyLocalizedPattern

public void applyLocalizedPattern(String pattern)
Применяет заданную строку локализованного шаблона к этому формату даты.
Parameters:
pattern - строка, которая должна быть сопоставлена с новым шаблоном формата даты и времени для этого формата
Throws:
NullPointerException - если заданный шаблон равен null
IllegalArgumentException - если заданный шаблон недействителен

getDateFormatSymbols

public DateFormatSymbols getDateFormatSymbols()
Возвращает копию символов формата даты и времени этого формата даты.
Returns:
символы формата даты и времени этого формата даты
See Also:
  • setDateFormatSymbols(java.text.DateFormatSymbols)

setDateFormatSymbols

public void setDateFormatSymbols(DateFormatSymbols newFormatSymbols)
Устанавливает символы формата даты и времени этого формата даты.
Parameters:
newFormatSymbols - новые символы формата даты и времени
Throws:
NullPointerException - если заданные новые символы формата равны null
See Also:
  • getDateFormatSymbols()

clone

public Object clone()
Создает копию этого SimpleDateFormat. Также клонирует символы формата даты этого формата.
Overrides:
clone в классе DateFormat
Returns:
клон этого SimpleDateFormat
See Also:
  • Cloneable

hashCode

public int hashCode()
Возвращает значение хэш-кода для этого SimpleDateFormat.
Overrides:
hashCode в классе DateFormat
Implementation Requirements:
Этот метод вычисляет значение хэш-кода, используя значение, возвращаемое toPattern().
Returns:
значение хэш-кода для этого SimpleDateFormat
See Also:
  • Object.hashCode()

toString

public String toString()
Возвращает строку, идентифицирующую этот SimpleDateFormat, для отладки.
Overrides:
toString в классе Object
Returns:
строку, идентифицирующую этот SimpleDateFormat, для отладки

equals

public boolean equals(Object obj)
Сравнивает указанный объект с этим SimpleDateFormat на равенство. Возвращает true, если объект также является SimpleDateFormat и два формата форматируют любое значение одинаково.
Overrides:
equals в классе DateFormat
Implementation Requirements:
Этот метод выполняет проверку равенства с понятием идентичности класса, основанной на getClass(), а не instanceof. Поэтому в методах equals в подклассах ни один экземпляр этого класса не должен сравниваться как равный экземпляру подкласса.
Parameters:
obj - объект для сравнения на равенство
Returns:
true, если указанный объект равен этому SimpleDateFormat
See Also:
  • Object.equals(Object)

© 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.
https://download.java.net/java/early_access/jdk24/docs/api/java.base/java/text/SimpleDateFormat.html

Spec-Zone.ru

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