Класс DateFormat
- Все реализуемые интерфейсы:
-
Serializable,Cloneable
- Прямые известные подклассы:
SimpleDateFormat
public abstract class DateFormat extends Format
DateFormat — это абстрактный класс для подклассов форматирования даты/времени, который форматирует и анализирует даты или время независимо от языка. Подкласс форматирования даты/времени, такой как SimpleDateFormat, позволяет форматировать (т.е., дата → текст), анализировать (текст → дата) и нормализовать. Дата представлена как объект Date или как миллисекунды с момента 1 января 1970 г. 00:00:00 GMT. DateFormat предоставляет множество методов класса для получения стандартных форматировщиков даты/времени на основе стандартного или заданного региона и ряда стилей форматирования. Эти стили форматирования включают FULL, LONG, MEDIUM и SHORT. Более подробная информация и примеры использования этих стилей приведены в описаниях методов.
DateFormat помогает форматировать и анализировать даты для любого региона. Ваш код может быть полностью независим от правил форматирования месяца, дня недели или даже формата календаря: лунный или солнечный.
Для форматирования даты для текущего региона используйте один из статических методов-фабрик:
myString = DateFormat.getDateInstance().format(myDate);
Если вы форматируете несколько дат, эффективнее получить форматировщик и использовать его несколько раз, чтобы система не запрашивала информацию о правилах форматирования языка и страны несколько раз.
DateFormat df = DateFormat.getDateInstance(); for (int i = 0; i < myDate.length; ++i) { output.println(df.format(myDate[i]) + "; "); }
Для форматирования даты для другого региона укажите его при вызове 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.
Вы также можете установить часовой пояс в формате, если хотите. Если вам нужен ещё больший контроль над форматом или анализом (или вы хотите предоставить пользователям больше контроля), вы можете попробовать преобразовать полученный от методов-фабрик 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 |
Константа для шаблона стиля long. |
static final int |
MEDIUM |
Константа для шаблона стиля 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 |
Константа для шаблона стиля 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 | Конструктор | Description |
|---|---|---|
protected |
Создает новый формат даты. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Object |
clone() |
Переопределяет Cloneable |
boolean |
equals |
Переопределяет equals |
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() |
Переопределяет hashCode |
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.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- Строка, начало которой должно быть обработано. - Возвращает:
- Дата, разобранная из строки.
- Исключения:
-
ParseException- если начало указанной строки не может быть обработано.
parse
public abstract Date parse(String source, ParsePosition pos)
"07/10/96 4:5 PM, PDT" будет разобран в Date, что эквивалентно Date(837039900000L). По умолчанию разбор допускает гибкость: если входные данные не соответствуют формату, используемому методом format этого объекта, но могут быть обработаны как дата, то разбор успешно завершается. Клиенты могут потребовать строгого соответствия формату, вызвав setLenient(false).
Этот оператор разбора использует calendar для получения Date. В результате поля даты и времени calendar и значение 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- Строка, часть которой должна быть обработана. -
pos- Объект ParsePosition с информацией об индексе и индексе ошибки, как описано выше. - Возвращает:
Dateразобранная из строки. В случае ошибки возвращает null.- Исключения:
-
NullPointerException- еслиsourceилиposравно null.
getTimeInstance
public static final DateFormat getTimeInstance()
FORMAT. Это эквивалентно вызову getTimeInstance(DEFAULT,
Locale.getDefault(Locale.Category.FORMAT)).
- Возвращает:
- форматировщик времени.
- См. также:
getTimeInstance
public static final DateFormat getTimeInstance(int style)
FORMAT. Это эквивалентно вызову getTimeInstance(style,
Locale.getDefault(Locale.Category.FORMAT)).
- Параметры:
-
style- заданный стиль форматирования. Например, SHORT для "чч:мм а" в локали США. - Возвращает:
- форматировщик времени.
- См. также:
getTimeInstance
public static final DateFormat getTimeInstance(int style, Locale aLocale)
- Параметры:
-
style- заданный стиль форматирования. Например, SHORT для "чч:мм а" в локали США. -
aLocale- заданная локаль. - Возвращает:
- форматировщик времени.
getDateInstance
public static final DateFormat getDateInstance()
FORMAT. Это эквивалентно вызову getDateInstance(DEFAULT,
Locale.getDefault(Locale.Category.FORMAT)).
- Возвращает:
- форматировщик даты.
- См. также:
getDateInstance
public static final DateFormat getDateInstance(int style)
FORMAT по умолчанию. Это эквивалентно вызову getDateInstance(style,
Locale.getDefault(Locale.Category.FORMAT)).
- Parameters:
-
style- заданный стиль форматирования. Например, SHORT для "M/d/yy" в локале США. - Returns:
- форматировщик дат.
- See Also:
getDateInstance
public static final DateFormat getDateInstance(int style, Locale aLocale)
- Parameters:
-
style- заданный стиль форматирования. Например, SHORT для "M/d/yy" в локале США. -
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 для "M/d/yy" в локале США. -
timeStyle- заданный стиль форматирования времени. Например, SHORT для "h:mm a" в локале США. - 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()
get*Instance этого класса могут возвращать локализованные экземпляры. Возвращаемый массив представляет собой объединение локалей, поддерживаемых Java runtime и установленных реализациями 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().
- Parameters:
-
lenient- приtrue, разбор является гибким - See Also:
isLenient
public boolean isLenient()
getCalendar().isLenient();
- Returns:
-
trueеслиcalendarявляется гибким;falseв противном случае. - See Also:
hashCode
public int hashCode()
- Overrides:
-
hashCodeв классеObject - Returns:
- значение хеш-кода для этого объекта.
- See Also:
equals
public boolean equals(Object obj)
- Overrides:
-
equalsв классеObject - Parameters:
-
obj- объект-ссылка, с которым сравнивается. - Returns:
-
trueесли этот объект такой же, как аргумент obj;falseв противном случае. - See Also:
clone
public Object clone()
- Overrides:
-
cloneв классеFormat - Returns:
- клонированный экземпляр.
- See Also:
© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/text/DateFormat.html