Класс DateFormat
- Все реализованные интерфейсы:
-
Serializable,Cloneable
- Прямые известные подклассы:
SimpleDateFormat
public abstract class DateFormat extends Format
DateFormat — это абстрактный класс для подклассов форматирования даты/времени, который форматирует и анализирует даты или время независимо от языка. Подкласс форматирования даты/времени, например, SimpleDateFormat, позволяет форматировать (т.е., дата → текст), анализировать (текст → дата) и нормализовывать. Дата представлена как объект Date или как миллисекунды с момента 1 января 1970 года 00:00:00 GMT. DateFormat предоставляет статические фабричные методы для получения форматировщиков даты/времени по умолчанию на основе локале по умолчанию или заданного локале и ряда стилей форматирования. Стили форматирования включают FULL, LONG, MEDIUM и SHORT. Для любого из фабричных методов с параметром style будет брошено исключение
IllegalArgumentException, если style не равно ни одному из определённых стилей форматирования. Более подробные сведения и примеры использования этих стилей приведены в описаниях методов.
DateFormat помогает форматировать и анализировать даты для любого региона. Ваш код может быть полностью независим от соглашений региона относительно месяцев, дней недели или даже формата календаря: лунный или солнечный.
Для форматирования даты для текущего региона используйте один из статических фабричных методов:
myString = DateFormat.getDateInstance().format(myDate);
Если вы форматируете несколько дат, эффективнее получить форматировщик и использовать его несколько раз, чтобы система не должна была многократно получать информацию о соглашениях языка и страны.
DateFormat df = DateFormat.getDateInstance(); for (Date myDate : dates) { output.println(df.format(myDate) + "; "); }
Для форматирования даты для другого региона укажите его при вызове getDateInstance().
DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, Locale.FRANCE);
Если указанный регион содержит «ca» (календарь), «rg» (переопределение региона) и/или «tz» (часовой пояс) расширения Unicode, календарь, страна и/или часовой пояс для форматирования переопределяются. Если указаны как «ca», так и «rg», календарь из расширения «ca» имеет приоритет перед неявным календарём из расширения «rg».
Вы также можете использовать DateFormat для анализа.
myDate = df.parse(myString);
Используйте getDateInstance, чтобы получить стандартный формат даты для данной страны. Доступны и другие статические фабричные методы. Используйте getTimeInstance, чтобы получить формат времени для данной страны. Используйте getDateTimeInstance, чтобы получить формат даты и времени. Вы можете передавать различные параметры в эти фабричные методы для управления длиной результата; от SHORT до MEDIUM до LONG до FULL. Точный результат зависит от региона, но, как правило:
-
SHORT— самый короткий и в основном числовой, например,12.13.52или3:30pm -
MEDIUM— более длинный, например,Jan 12, 1952 -
LONG— ещё длиннее, например,January 12, 1952или3:30:32pm -
FULL— самый длинный, например,Tuesday, April 12, 1952 AD or 3:30:42pm PST.
MEDIUM, а полная форма — с опциями LONG и FULL. Также можно установить часовой пояс в формате, если необходимо. Если вы хотите получить ещё больший контроль над форматированием или анализом (или хотите предоставить пользователям больший контроль), вы можете попробовать преобразовать полученный из фабричных методов DateFormat в SimpleDateFormat. Это сработает для большинства стран; просто помните, что следует поместить его в блок try на случай необычного случая.
Также можно использовать формы методов parse и format с ParsePosition и FieldPosition, что позволит вам
- постепенно анализировать фрагменты строки.
- выравнивать любое конкретное поле или находить его для выбора на экране.
Синхронизация
Форматы дат не синхронизированы. Рекомендуется создавать отдельные экземпляры форматировщиков для каждого потока. Если несколько потоков одновременно обращаются к форматировщику, он должен быть синхронизирован внешним образом.
- Примечание API:
- Рассмотрите использование
DateTimeFormatterв качестве неизменяемого и потокобезопасного альтернативного варианта. - Требования к реализации:
- Методы
format(Date, StringBuffer, FieldPosition)иparse(String, ParsePosition)могут выброситьNullPointerException, если какой-либо из их параметров являетсяnull. Подкласс может предоставить собственную реализацию и спецификацию относительноNullPointerException. - Методы
setCalendar(Calendar),setNumberFormat(NumberFormat)иsetTimeZone(TimeZone)не выбрасываютNullPointerException, когда их параметр являетсяnull, но любые последующие операции с тем же экземпляром могут выброситьNullPointerException. - Методы
getCalendar(),getNumberFormat()иgetTimeZone()могут вернутьnull, если соответствующие значения этого экземпляра установлены вnullчерез соответствующие методы-сеттеры. Например,getTimeZone()может вернутьnull, если значениеTimeZoneэтого экземпляра установлено какsetTimeZone(null).
- Методы
- С:
- 1.1
- См. также:
Краткое описание вложенных классов
| Modifier and Type | Class | Description |
|---|---|---|
static class |
DateFormat.Field |
Определяет константы, используемые в качестве ключей атрибутов в AttributedCharacterIterator, возвращаемом из DateFormat.formatToCharacterIterator, и как идентификаторы полей в FieldPosition. |
Краткое описание полей
| Modifier and Type | Field | Description |
|---|---|---|
static final int |
AM_PM_FIELD |
Полезная константа для выравнивания поля AM_PM. |
protected Calendar |
calendar |
Экземпляр Calendar, используемый для расчета полей даты и времени и момента времени. |
static final int |
DATE_FIELD |
Полезная константа для выравнивания поля DATE. |
static final int |
DAY_OF_WEEK_FIELD |
Полезная константа для выравнивания поля DAY_OF_WEEK. |
static final int |
DAY_OF_WEEK_IN_MONTH_FIELD |
Полезная константа для выравнивания поля DAY_OF_WEEK_IN_MONTH. |
static final int |
DAY_OF_YEAR_FIELD |
Полезная константа для выравнивания поля DAY_OF_YEAR. |
static final int |
DEFAULT |
Константа для шаблона стиля по умолчанию. |
static final int |
ERA_FIELD |
Полезная константа для выравнивания поля ERA. |
static final int |
FULL |
Константа для шаблона стиля "полностью". |
static final int |
HOUR_OF_DAY0_FIELD |
Полезная константа для выравнивания поля HOUR_OF_DAY (нумерация с нуля). |
static final int |
HOUR_OF_DAY1_FIELD |
Полезная константа для выравнивания поля HOUR_OF_DAY (нумерация с единицы). |
static final int |
HOUR0_FIELD |
Полезная константа для выравнивания поля HOUR (нумерация с нуля). |
static final int |
HOUR1_FIELD |
Полезная константа для выравнивания поля HOUR (нумерация с единицы). |
static final int |
LONG |
Константа для шаблона стиля "полностью". |
static final int |
MEDIUM |
Константа для шаблона стиля "среднего" формата. |
static final int |
MILLISECOND_FIELD |
Полезная константа для выравнивания поля MILLISECOND. |
static final int |
MINUTE_FIELD |
Полезная константа для выравнивания поля MINUTE. |
static final int |
MONTH_FIELD |
Полезная константа для выравнивания поля MONTH. |
protected NumberFormat |
numberFormat |
Форматировщик чисел, который DateFormat использует для форматирования чисел в датах и временах. |
static final int |
SECOND_FIELD |
Полезная константа для выравнивания поля SECOND. |
static final int |
SHORT |
Константа для шаблона стиля "коротко". |
static final int |
TIMEZONE_FIELD |
Полезная константа для выравнивания поля TIMEZONE. |
static final int |
WEEK_OF_MONTH_FIELD |
Полезная константа для выравнивания поля WEEK_OF_MONTH. |
static final int |
WEEK_OF_YEAR_FIELD |
Полезная константа для выравнивания поля WEEK_OF_YEAR. |
static final int |
YEAR_FIELD |
Полезная константа для выравнивания поля YEAR. |
Краткое описание конструкторов
| Modifier | Constructor | Description |
|---|---|---|
protected |
Создаёт новый формат даты. |
Краткое описание методов
| Modifier and Type | Method | Description |
|---|---|---|
Object |
clone() |
Переопределяет Cloneable |
boolean |
equals |
Сравнивает указанный объект с этим DateFormat на равенство. |
final StringBuffer |
format |
Форматирует заданный Object в строку даты и времени. |
final String |
format |
Форматирует Date в строку даты и времени. |
abstract StringBuffer |
format |
Форматирует Date в строку даты и времени. |
static Locale[] |
getAvailableLocales() |
Возвращает массив всех языковых параметров, для которых методы get*Instance этого класса могут возвращать локализованные экземпляры. |
Calendar |
getCalendar() |
Получает календарь, связанный с этим форматом даты/времени. |
static final DateFormat |
getDateInstance() |
Получает формат даты с форматом по умолчанию для языкового параметра по умолчанию FORMAT. |
static final DateFormat |
getDateInstance |
Получает формат даты с заданным стилем форматирования для языкового параметра по умолчанию FORMAT. |
static final DateFormat |
getDateInstance |
Получает формат даты с заданным стилем форматирования для заданного языкового параметра. |
static final DateFormat |
getDateTimeInstance() |
Получает формат даты и времени с форматом по умолчанию для языкового параметра по умолчанию FORMAT. |
static final DateFormat |
getDateTimeInstance |
Получает формат даты и времени с заданными стилями форматирования даты и времени для языкового параметра по умолчанию FORMAT. |
static final DateFormat |
getDateTimeInstance |
Получает формат даты и времени с заданными стилями форматирования для заданного языкового параметра. |
static final DateFormat |
getInstance() |
Получить формат даты и времени по умолчанию, который использует стиль SHORT для даты и времени. |
NumberFormat |
getNumberFormat() |
Получает формат числа, который используется этим форматом даты/времени для форматирования и разбора времени. |
static final DateFormat |
getTimeInstance() |
Получает формат времени с форматом по умолчанию для языкового параметра по умолчанию FORMAT. |
static final DateFormat |
getTimeInstance |
Получает формат времени с заданным стилем форматирования для языкового параметра по умолчанию FORMAT. |
static final DateFormat |
getTimeInstance |
Получает формат времени с заданным стилем форматирования для заданного языкового параметра. |
TimeZone |
getTimeZone() |
Получает часовой пояс. |
int |
hashCode() |
Возвращает хэш-код для этого DateFormat. |
boolean |
isLenient() |
Указывает, следует ли допускать нестрогий разбор даты/времени. |
Date |
parse |
Разбирает текст с начала заданной строки, чтобы получить дату. |
abstract Date |
parse |
Разбирает строку даты/времени в соответствии с заданным положением разбора. |
Object |
parseObject |
Разбирает текст из строки, чтобы получить Date. |
void |
setCalendar |
Устанавливает календарь, который будет использоваться этим форматом даты. |
void |
setLenient |
Указывает, следует ли допускать нестрогий разбор даты/времени. |
void |
setNumberFormat |
Позволяет установить формат числа. |
void |
setTimeZone |
Устанавливает часовой пояс для календаря этого объекта DateFormat. |
Методы, объявленные в классе java.text.Format
format, formatToCharacterIterator, parseObject
Подробное описание полей
calendar
protected Calendar calendar
numberFormat
protected NumberFormat numberFormat
DateFormat использует для форматирования чисел в датах и временах. Подклассы должны инициализировать его форматировщиком чисел, соответствующим локале, связанной с этим DateFormat.ERA_FIELD
public static final int ERA_FIELD
- См. также:
YEAR_FIELD
public static final int YEAR_FIELD
- См. также:
MONTH_FIELD
public static final int MONTH_FIELD
- См. также:
DATE_FIELD
public static final int DATE_FIELD
- См. также:
HOUR_OF_DAY1_FIELD
public static final int HOUR_OF_DAY1_FIELD
- См. также:
HOUR_OF_DAY0_FIELD
public static final int HOUR_OF_DAY0_FIELD
- См. также:
MINUTE_FIELD
public static final int MINUTE_FIELD
- См. также:
SECOND_FIELD
public static final int SECOND_FIELD
- См. также:
MILLISECOND_FIELD
public static final int MILLISECOND_FIELD
- См. также:
DAY_OF_WEEK_FIELD
public static final int DAY_OF_WEEK_FIELD
- См. также:
DAY_OF_YEAR_FIELD
public static final int DAY_OF_YEAR_FIELD
- См. также:
DAY_OF_WEEK_IN_MONTH_FIELD
public static final int DAY_OF_WEEK_IN_MONTH_FIELD
- См. также:
WEEK_OF_YEAR_FIELD
public static final int WEEK_OF_YEAR_FIELD
- См. также:
WEEK_OF_MONTH_FIELD
public static final int WEEK_OF_MONTH_FIELD
- См. также:
AM_PM_FIELD
public static final int AM_PM_FIELD
- См. также:
HOUR1_FIELD
public static final int HOUR1_FIELD
- См. также:
HOUR0_FIELD
public static final int HOUR0_FIELD
- См. также:
TIMEZONE_FIELD
public static final int TIMEZONE_FIELD
- См. также:
FULL
public static final int FULL
- См. также:
LONG
public static final int LONG
- См. также:
MEDIUM
public static final int MEDIUM
- См. также:
SHORT
public static final int SHORT
- См. также:
DEFAULT
public static final int DEFAULT
- См. также:
Подробное описание конструкторов
DateFormat
protected DateFormat()
Подробное описание методов
format
public final StringBuffer format(Object obj, StringBuffer toAppendTo, FieldPosition fieldPosition)
Object в строку даты и времени. Отформатированная строка добавляется к заданному StringBuffer.- Установлено в:
-
formatв классеFormat - Параметры:
-
obj- Должен бытьDateилиNumber, представляющий смещение в миллисекундах от эпохи. -
toAppendTo- Буфер строк для возвращаемой строки даты и времени. -
fieldPosition- отслеживает положение поля в возвращаемой строке. Например, при заданном тексте даты и времени"1996.07.10 AD at 15:08:56 PDT", если заданноеfieldPositionравноYEAR_FIELD, начальный и конечный индексыfieldPositionбудут установлены соответственно в 0 и 4. Обратите внимание, что если одно и то же поле даты и времени появляется более одного раза в шаблоне, тоfieldPositionбудет установлено для первого вхождения этого поля даты и времени. Например, форматированиеDateдо строки даты и времени"1 PM PDT (Pacific Daylight Time)"с шаблоном"h a z (zzzz)"и полем выравниванияTIMEZONE_FIELD, начальный и конечный индексыfieldPositionбудут установлены соответственно в 5 и 8 для первого вхождения символа шаблона часового пояса'z'. - Возвращает:
- буфер строк, переданный как
toAppendTo, со добавленным отформатированным текстом. - Исключения:
-
IllegalArgumentException- еслиFormatне может отформатировать заданныйobj. - См. также:
format
public abstract StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition)
Date в строку даты и времени. Отформатированная строка добавляется к заданному StringBuffer.- Параметры:
-
date- дата для форматирования в строку даты и времени. -
toAppendTo- буфер строк для возвращаемой строки даты и времени. -
fieldPosition- отслеживает положение поля в возвращаемой строке. Например, при заданном тексте даты и времени"1996.07.10 AD at 15:08:56 PDT", если заданноеfieldPositionравноYEAR_FIELD, начальный и конечный индексыfieldPositionбудут установлены соответственно в 0 и 4. Обратите внимание, что если одно и то же поле даты и времени появляется более одного раза в шаблоне, тоfieldPositionбудет установлено для первого вхождения этого поля даты и времени. Например, форматированиеDateдо строки даты и времени"1 PM PDT (Pacific Daylight Time)"с шаблоном"h a z (zzzz)"и полем выравниванияTIMEZONE_FIELD, начальный и конечный индексыfieldPositionбудут установлены соответственно в 5 и 8 для первого вхождения символа шаблона часового пояса'z'. - Возвращает:
- буфер строк, переданный как
toAppendTo, со добавленным отформатированным текстом.
format
public final String format(Date date)
Date в строку даты и времени.- Параметры:
-
date- значение времени для форматирования в строку даты и времени. - Возвращает:
- отформатированная строка даты и времени.
parse
public Date parse(String source) throws ParseException
См. метод parse(String, ParsePosition) для получения дополнительной информации о разборе даты.
- Параметры:
-
source-String, начало которого необходимо разобрать. - Возвращает:
Date, разобранный из строки.- Исключения:
-
ParseException- если начало заданной строки невозможно разобрать.
parse
public abstract Date parse(String source, ParsePosition pos)
this имеет шаблон "M/d/yy h:m a, z", то текстовое время "07/10/96 4:5 PM, PDT" будет разобрано в Date, эквивалентное Date(837039900000L). По умолчанию разбор выполняется гибко: если входные данные не соответствуют форме, используемой методом format этого объекта, но их все же можно разобрать как дату, то разбор успешно выполняется. Клиенты могут потребовать строгого соблюдения формата, вызвав setLenient(false).
Этот операция разбора использует calendar для создания Date. В результате, поля даты и времени TimeZone могут быть перезаписаны в зависимости от реализации подклассов. Любое значение
TimeZone, ранее заданное вызовом setTimeZone, может потребоваться восстановить для дальнейших операций.
- Параметры:
-
source- Строка даты/времени для разбора -
pos- При вводе позиция, с которой следует начать разбор; при выводе позиция, в которой завершился разбор, или начальная позиция, если разбор не удался. - Возвращает:
Date, илиnull, если входные данные нельзя было разобрать
parseObject
public Object parseObject(String source, ParsePosition pos)
Date. Метод пытается разобрать текст, начиная с индекса, указанного в pos. Если разбор удался, то индекс pos обновляется до индекса после последнего использованного символа (разбор не обязательно использует все символы до конца строки), и возвращается разобранная дата. Обновленный pos может использоваться для указания начальной точки для следующего вызова этого метода. Если произошла ошибка, индекс pos не изменяется, индекс ошибки pos устанавливается на индекс символа, где произошла ошибка, и возвращается null.
См. метод parse(String, ParsePosition) для получения дополнительной информации о разборе даты.
- Установлено в:
-
parseObjectв классеFormat - Параметры:
-
source-String, часть которой должна быть разобрана. -
pos- ОбъектParsePositionс информацией об индексе и индексе ошибки, как описано выше. - Возвращает:
Date, разобранный из строки. В случае ошибки возвращает null.- Исключения:
-
NullPointerException- еслиsourceилиposравно null.
getTimeInstance
public static final DateFormat getTimeInstance()
Это эквивалентно вызову getTimeInstance(DEFAULT,
Locale.getDefault(Locale.Category.FORMAT)).
- Возвращает:
- форматировщик времени.
- См. также:
getTimeInstance
public static final DateFormat getTimeInstance(int style)
Это эквивалентно вызову getTimeInstance(style,
Locale.getDefault(Locale.Category.FORMAT)).
- Параметры:
-
style- заданный стиль форматирования. Например, SHORT для "h:mm a" в локали США. - Возвращает:
- форматировщик времени.
- См. также:
getTimeInstance
public static final DateFormat getTimeInstance(int style, Locale aLocale)
- Parameters:
-
style- заданный стиль форматирования. Например, SHORT для "ч:мм а" в американском регионе. -
aLocale- заданный регион. - Returns:
- форматтер времени.
getDateInstance
public static final DateFormat getDateInstance()
FORMAT. Эквивалентно вызову getDateInstance(DEFAULT,
Locale.getDefault(Locale.Category.FORMAT)).
- Returns:
- форматтер даты.
- See Also:
getDateInstance
public static final DateFormat getDateInstance(int style)
FORMAT. Эквивалентно вызову getDateInstance(style,
Locale.getDefault(Locale.Category.FORMAT)).
- Parameters:
-
style- заданный стиль форматирования. Например, SHORT для "Д/М/ГГ" в американском регионе. - Returns:
- форматтер даты.
- See Also:
getDateInstance
public static final DateFormat getDateInstance(int style, Locale aLocale)
- Parameters:
-
style- заданный стиль форматирования. Например, SHORT для "Д/М/ГГ" в американском регионе. -
aLocale- заданный регион. - Returns:
- форматтер даты.
getDateTimeInstance
public static final DateFormat getDateTimeInstance()
FORMAT. Эквивалентно вызову getDateTimeInstance(DEFAULT,
DEFAULT, Locale.getDefault(Locale.Category.FORMAT)).
- Returns:
- форматтер даты и времени.
- See Also:
getDateTimeInstance
public static final DateFormat getDateTimeInstance(int dateStyle, int timeStyle)
FORMAT. Эквивалентно вызову getDateTimeInstance(dateStyle,
timeStyle, Locale.getDefault(Locale.Category.FORMAT)).
- Parameters:
-
dateStyle- заданный стиль форматирования даты. Например, SHORT для "Д/М/ГГ" в американском регионе. -
timeStyle- заданный стиль форматирования времени. Например, SHORT для "ч:мм а" в американском регионе. - Returns:
- форматтер даты и времени.
- See Also:
getDateTimeInstance
public static final DateFormat getDateTimeInstance(int dateStyle, int timeStyle, Locale aLocale)
- Parameters:
-
dateStyle- заданный стиль форматирования даты. -
timeStyle- заданный стиль форматирования времени. -
aLocale- заданный регион. - Returns:
- форматтер даты и времени.
getInstance
public static final DateFormat getInstance()
- Returns:
- форматтер даты и времени
getAvailableLocales
public static Locale[] getAvailableLocales()
DateFormatProvider. По меньшей мере, возвращаемый массив должен содержать экземпляр Locale, равный Locale.ROOT, и экземпляр Locale, равный Locale.US.- Returns:
- Массив регионов, для которых доступны локализованные экземпляры
DateFormat.
setCalendar
public void setCalendar(Calendar newCalendar)
Любые значения TimeZone и строгость, которые были установлены ранее, перезаписываются значениями newCalendar.
- Parameters:
-
newCalendar- новыйCalendar, который будет использоваться форматом даты
getCalendar
public Calendar getCalendar()
- Returns:
- календарь, связанный с этим форматом даты/времени.
setNumberFormat
public void setNumberFormat(NumberFormat newNumberFormat)
- Parameters:
-
newNumberFormat- заданный новый NumberFormat.
getNumberFormat
public NumberFormat getNumberFormat()
- Returns:
- формат числа, используемый этим форматом даты/времени.
setTimeZone
public void setTimeZone(TimeZone zone)
DateFormat. Этот метод эквивалентен следующему вызову. getCalendar().setTimeZone(zone);
Часовой пояс, установленный этим методом, перезаписывается при вызове setCalendar.
Часовой пояс, установленный этим методом, может быть перезаписан в результате вызова метода разбора.
- Parameters:
-
zone- заданный новый часовой пояс.
getTimeZone
public TimeZone getTimeZone()
getCalendar().getTimeZone();
- Returns:
- часовой пояс, связанный с календарем DateFormat.
setLenient
public void setLenient(boolean lenient)
Этот метод эквивалентен следующему вызову.
getCalendar().setLenient(lenient);
Это значение гибкости перезаписывается вызовом setCalendar().
- Implementation Requirements:
- Пробел в тексте ввода будет соответствовать любому другому пробелу в шаблоне при гибком разборе; в противном случае он не будет соответствовать.
- Parameters:
-
lenient- еслиtrue, разбор гибкий - See Also:
isLenient
public boolean isLenient()
getCalendar().isLenient();
- Returns:
-
true, еслиcalendarгибкий;falseв противном случае. - See Also:
hashCode
public int hashCode()
DateFormat.- Overrides:
-
hashCodeв классеObject - Требования к реализации:
- Этот метод вычисляет значение хэш-суммы, используя значение, возвращённое
getNumberFormat(). - Возвращает:
- код хэш-суммы для данного
DateFormat - См. также:
equals
public boolean equals(Object obj)
DateFormat на равенство. Возвращает true, если объект также является DateFormat и два формата будут форматировать любое значение одинаково.- Overrides:
-
equalsв классеObject - Требования к реализации:
- Этот метод выполняет проверку на равенство с понятием идентичности класса, основанном на
getClass(), а неinstanceof. Поэтому в методах equals в подклассах ни один экземпляр этого класса не должен сравниваться как равный экземпляру подкласса. - Параметры:
-
obj- объект для сравнения на равенство - Возвращает:
-
true, если указанный объект равен данномуDateFormat - См. также:
clone
© 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/DateFormat.html