This page was translated from English by the community.Learn more and join the MDN Web Docs community.
Intl.DateTimeFormat
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since сентябрь 2017 г..
ОбъектIntl.DateTimeFormat предоставляет возможности форматирования даты и времени в соответствии с языковыми правилами.
In this article
Интерактивный пример
const date = new Date(Date.UTC(2020, 11, 20, 3, 23, 16, 738));// Results below assume UTC timezone - your results may vary// Specify default date formatting for language (locale)console.log(new Intl.DateTimeFormat("en-US").format(date));// Expected output: "12/20/2020"// Specify default date formatting for language with a fallback language (in this case Indonesian)console.log(new Intl.DateTimeFormat(["ban", "id"]).format(date));// Expected output: "20/12/2020"// Specify date and time format using "style" options (i.e. full, long, medium, short)console.log( new Intl.DateTimeFormat("en-GB", { dateStyle: "full", timeStyle: "long", timeZone: "Australia/Sydney", }).format(date),);// Expected output: "Sunday, 20 December 2020 at 14:23:16 GMT+11"Конструктор
Intl.DateTimeFormat()Создаёт новый объект
Intl.DateTimeFormat.
Статические методы
Intl.DateTimeFormat.supportedLocalesOf()Возвращает массив, содержащий локали, которые поддерживаются без необходимости возврата к локали по умолчанию.
Свойства экземпляра
Эти свойства определены вIntl.DateTimeFormat.prototype и есть у всех экземпляровIntl.DateTimeFormat.
Intl.DateTimeFormat.prototype.constructorФункция-конструктор, создающая экземпляр объекта. Для экземпляров
Intl.DateTimeFormatначальным значением является конструкторIntl.DateTimeFormat.Intl.DateTimeFormat.prototype[@@toStringTag]Начальным значением свойства
@@toStringTagявляется строка"Intl.DateTimeFormat". Это свойство используется вObject.prototype.toString().
Методы экземпляра
Intl.DateTimeFormat.prototype.format()Функция-геттер, которая форматирует дату в соответствии с локалью и настройками форматирования этого объекта
DateTimeFormat.Intl.DateTimeFormat.prototype.formatRange()Этот метод принимает дведаты и форматирует диапазон дат наиболее кратким образом на основе локали и параметров, установленных при создании экземпляра
DateTimeFormat.Intl.DateTimeFormat.prototype.formatRangeToParts()Этот метод принимает дведаты и возвращает массив объектов, которые содержат специфичные для локали токены, представляющие каждую часть отформатированного диапазона дат.
Intl.DateTimeFormat.prototype.formatToParts()Возвращает
массивобъектов, представляющих части даты, которые могут быть использованы для пользовательского форматирования с учётом локали.Intl.DateTimeFormat.prototype.resolvedOptions()Возвращает новый объект со свойствами, представляющими локаль и настройки форматирования, определённые во время инициализации объекта.
Примеры
>ИспользованиеDateTimeFormat
При использовании без указания локалиDateTimeFormat использует локаль и настройки по умолчанию.
const date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));// результат вызова без аргументов зависит от реализации,// локали по умолчанию и часового пояса по умолчаниюconsole.log(new Intl.DateTimeFormat().format(date));// "12/19/2012", если код запущен с локалью en-US и часовым поясом America/Los_AngelesИспользование параметраlocales
Этот пример показывает некоторые локализованные форматы даты и времени. Для получения формата языка, используемого в пользовательском интерфейсе вашего приложения, убедитесь, что вы указали этот язык (и, возможно, несколько запасных языков) используя параметрlocales:
const date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));// Форматирование ниже предполагает, что местный часовой пояс равен// America/Los_Angeles для локали США// В американском английском используется порядок месяц-день-годconsole.log(new Intl.DateTimeFormat("en-US").format(date));// "12/19/2012"// В британском английском используется порядок день-месяц-годconsole.log(new Intl.DateTimeFormat("en-GB").format(date));// "20/12/2012"// В корейском используется порядок год-месяц-деньconsole.log(new Intl.DateTimeFormat("ko-KR").format(date));// "2012. 12. 20."// В большинстве арабоязычных стран используют настоящие арабские цифрыconsole.log(new Intl.DateTimeFormat("ar-EG").format(date));// "٢٠/١٢/٢٠١٢"// В Японии приложения могут захотеть использовать японский календарь,// в котором 2012 год является 24-м годом эры Хейсейconsole.log(new Intl.DateTimeFormat("ja-JP-u-ca-japanese").format(date));// "24/12/20"// Если запрашиваемый язык может не поддерживаться, например// балийский, откатываемся на запасной язык, в данном случае индонезийскийconsole.log(new Intl.DateTimeFormat(["ban", "id"]).format(date));// "20/12/2012"Использование параметраoptions
Формат даты и времени может быть настроен с помощью параметраoptions:
const date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0, 200));// Запрашиваем день недели вместе с длинным форматом датыlet options = { weekday: "long", year: "numeric", month: "long", day: "numeric",};console.log(new Intl.DateTimeFormat("de-DE", options).format(date));// "Donnerstag, 20. Dezember 2012"// Приложение может захотеть использовать UTC и показать этоoptions.timeZone = "UTC";options.timeZoneName = "short";console.log(new Intl.DateTimeFormat("en-US", options).format(date));// "Thursday, December 20, 2012, GMT"// Иногда требуется большая точностьoptions = { hour: "numeric", minute: "numeric", second: "numeric", timeZone: "Australia/Sydney", timeZoneName: "short",};console.log(new Intl.DateTimeFormat("en-AU", options).format(date));// "2:00:00 pm AEDT"// Иногда требуется ещё большая точностьoptions.fractionalSecondDigits = 3; // количество цифр для отображения долей секундconsole.log(new Intl.DateTimeFormat("en-AU", options).format(date));// "2:00:00.200 pm AEDT"// Иногда даже в США нужен 24-часовой формат времениoptions = { year: "numeric", month: "numeric", day: "numeric", hour: "numeric", minute: "numeric", second: "numeric", hour12: false, timeZone: "America/Los_Angeles",};console.log(new Intl.DateTimeFormat("en-US", options).format(date));// "12/19/2012, 19:00:00"// Для указания настроек, но использования локали по умолчанию, нужно передать undefinedconsole.log(new Intl.DateTimeFormat(undefined, options).format(date));// "12/19/2012, 19:00:00"// Иногда полезно включать время сутокoptions = { hour: "numeric", dayPeriod: "short" };console.log(new Intl.DateTimeFormat("en-US", options).format(date));// 10 at nightФорматы календаря и нумерации также можно установить независимо с помощью параметраoptions:
const options = { calendar: "chinese", numberingSystem: "arab" };const dateFormat = new Intl.DateTimeFormat(undefined, options);const usedOptions = dateFormat.resolvedOptions();console.log(usedOptions.calendar);// "chinese"console.log(usedOptions.numberingSystem);// "arab"console.log(usedOptions.timeZone);// "America/New_York" (the users default timezone)Спецификации
| Specification |
|---|
| ECMAScript® 2026 Internationalization API Specification> # datetimeformat-objects> |