Intl.DateTimeFormat
Базовая поддержка Широко доступна
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в версиях браузеров. Она доступна в браузерах с сентября 2017 года.
Объект Intl.DateTimeFormat обеспечивает форматирование даты и времени с учетом языка.
Попробуйте
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[Symbol.toStringTag] - Начальным значением свойства
[Symbol.toStringTag]является строка"Intl.DateTimeFormat". Это свойство используется вObject.prototype.toString().
Методы экземпляра
-
Intl.DateTimeFormat.prototype.format() - Функция-геттер, которая форматирует дату в соответствии с локалью и параметрами форматирования этого объекта
DateTimeFormat. -
Intl.DateTimeFormat.prototype.formatRange() - Этот метод принимает два объекта Date и форматирует диапазон дат наиболее кратким способом, основываясь на локали и параметрах, предоставленных при создании
DateTimeFormat. -
Intl.DateTimeFormat.prototype.formatRangeToParts() - Этот метод принимает два объекта Date и возвращает массив объектов, содержащих специфичные для локали токены, представляющие каждую часть отформатированного диапазона дат.
-
Intl.DateTimeFormat.prototype.formatToParts() - Возвращает
Arrayобъектов, представляющих строку даты по частям, которые могут быть использованы для пользовательского форматирования с учетом локали. -
Intl.DateTimeFormat.prototype.resolvedOptions() - Возвращает новый объект со свойствами, отражающими локаль и параметры форматирования, вычисленные во время инициализации объекта.
Примеры
Использование DateTimeFormat
При обычном использовании без указания локали, DateTimeFormat использует локаль и параметры по умолчанию.
const date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0)); // toLocaleString without arguments depends on the implementation, // the default locale, and the default time zone console.log(new Intl.DateTimeFormat().format(date)); // "12/19/2012" if run with en-US locale (language) and time zone America/Los_Angeles (UTC-0800)
Использование локалей
Этот пример показывает некоторые вариации локализованных форматов даты и времени. Чтобы получить формат языка, используемого в пользовательском интерфейсе вашего приложения, убедитесь, что вы указали этот язык (и, возможно, некоторые резервные языки) с помощью аргумента locales:
const date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
// Results below use the time zone of America/Los_Angeles (UTC-0800, Pacific Standard Time)
// US English uses month-day-year order
console.log(new Intl.DateTimeFormat("en-US").format(date));
// "12/19/2012"
// British English uses day-month-year order
console.log(new Intl.DateTimeFormat("en-GB").format(date));
// "19/12/2012"
// Korean uses year-month-day order
console.log(new Intl.DateTimeFormat("ko-KR").format(date));
// "2012. 12. 19."
// Arabic in most Arabic speaking countries uses real Arabic digits
console.log(new Intl.DateTimeFormat("ar-EG").format(date));
// "١٩/١٢/٢٠١٢"
// for Japanese, applications may want to use the Japanese calendar,
// where 2012 was the year 24 of the Heisei era
console.log(new Intl.DateTimeFormat("ja-JP-u-ca-japanese").format(date));
// "24/12/19"
// when requesting a language that may not be supported, such as
// Balinese, include a fallback language, in this case Indonesian
console.log(new Intl.DateTimeFormat(["ban", "id"]).format(date));
// "19/12/2012"
Использование параметров
Форматы даты и времени можно настраивать с помощью аргумента options:
const date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0, 200));
// request a weekday along with a long date
let options = {
weekday: "long",
year: "numeric",
month: "long",
day: "numeric",
};
console.log(new Intl.DateTimeFormat("de-DE", options).format(date));
// "Donnerstag, 20. Dezember 2012"
// an application may want to use UTC and make that visible
options.timeZone = "UTC";
options.timeZoneName = "short";
console.log(new Intl.DateTimeFormat("en-US", options).format(date));
// "Thursday, December 20, 2012, GMT"
// sometimes you want to be more precise
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"
// sometimes you want to be very precise
options.fractionalSecondDigits = 3; // number digits for fraction-of-seconds
console.log(new Intl.DateTimeFormat("en-AU", options).format(date));
// "2:00:00.200 pm AEDT"
// sometimes even the US needs 24-hour time
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"
// to specify options but use the browser's default locale, use undefined
console.log(new Intl.DateTimeFormat(undefined, options).format(date));
// "12/19/2012, 19:00:00"
// sometimes it's helpful to include the period of the day
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)
Спецификации
Совместимость с браузерами
| Настольные компьютеры | Мобильные устройства | Сервер | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
DateTimeFormat |
24 |
12 |
29 |
15 |
10 |
25 |
56 |
14 |
10 |
1.5 |
4.4 |
10 |
1.0.0 |
1.8 |
0.12.0До версии 13.0.0 по умолчанию доступны только данные локали дляen-US. См. конструктор DateTimeFormat() для получения более подробной информации. |
DateTimeFormat |
24 |
12 |
29 |
15 |
10 |
25 |
56 |
14 |
10 |
1.5 |
4.4 |
10 |
1.0.0 |
1.8 |
13.0.0
0.12.0–13.0.0До версии 13.0.0 по умолчанию доступны только данные локали дляen-US. При указании других локалей экземпляр DateTimeFormat будет незаметно переключаться на en-US. Чтобы сделать полные данные ICU (локальные) доступными до версии 13, см. документацию Node.js по опции --with-intl и инструкции по предоставлению данных. |
format |
24 |
12 |
29 |
15 |
10 |
25 |
56 |
14 |
10 |
1.5 |
4.4 |
10 |
1.0.0 |
1.8 |
0.12.0До версии 13.0.0 по умолчанию доступны только данные локали дляen-US. См. конструктор DateTimeFormat() для получения более подробной информации. |
formatRange |
76 |
79 |
91 |
63 |
14.1 |
76 |
91 |
54 |
14.5 |
12.0 |
76 |
14.5 |
1.0.0 |
1.8 |
12.9.0До версии 13.0.0 по умолчанию доступны только данные локали дляen-US. См. конструктор DateTimeFormat() для получения более подробной информации. |
formatRangeToParts |
76 |
79 |
91 |
63 |
14.1 |
76 |
91 |
54 |
14.5 |
12.0 |
76 |
14.5 |
1.0.0 |
1.8 |
12.9.0До версии 13.0.0 по умолчанию доступны только данные локали дляen-US. См. конструктор DateTimeFormat() для получения более подробной информации. |
formatToParts |
57До версии 71formatToParts() возвращал объект с некорректно написанным ключом типа dayperiod. Версия 71 и более поздние используют определенный в спецификации dayPeriod. См. баг 41402623. |
18 |
51 |
44До версии 58formatToParts() возвращал объект с некорректно написанным ключом типа dayperiod. Версия 58 и более поздние используют определенный в спецификации dayPeriod. См. баг 41402623. |
11 |
57До версии 71formatToParts() возвращал объект с некорректно написанным ключом типа dayperiod. Версия 71 и более поздние используют определенный в спецификации dayPeriod. См. баг 41402623. |
56 |
43До версии 50formatToParts() возвращал объект с некорректно написанным ключом типа dayperiod. Версия 50 и более поздние используют определенный в спецификации dayPeriod. См. баг 41402623. |
11 |
7.0До версии 71formatToParts() возвращал объект с некорректно написанным ключом типа dayperiod. Версия 71 и более поздние используют определенный в спецификации dayPeriod. См. баг 41402623. |
57До версии 71formatToParts() возвращал объект с некорректно написанным ключом типа dayperiod. Версия 71 и более поздние используют определенный в спецификации dayPeriod. См. баг 41402623. |
11 |
1.0.0 |
1.8 |
8.0.0До версии 12.0.0formatToParts() возвращал объект с некорректно написанным ключом типа dayperiod. Версия 12.0.0 и более поздние используют определенный в спецификации dayPeriod. См. баг 41402623.До версии 13.0.0 по умолчанию доступны только данные локали для en-US. См. конструктор DateTimeFormat() для получения более подробной информации. |
resolvedOptions |
24 |
12 |
29 |
15 |
10 |
25 |
56 |
14 |
10 |
1.5 |
4.4 |
10 |
1.0.0 |
1.8 |
0.12.0До версии 13.0.0 по умолчанию доступны только данные локали дляen-US. См. конструктор DateTimeFormat() для получения более подробной информации. |
supportedLocalesOf |
24 |
12 |
29 |
15 |
10 |
25 |
56 |
14 |
10 |
1.5 |
4.4 |
10 |
1.0.0 |
1.8 |
13.0.0
0.12.0–13.0.0До версии 13.0.0 по умолчанию доступны только данные локали дляen-US. Чтобы сделать полные данные ICU (локальные) доступными до версии 13, см. документацию Node.js по опции --with-intl и инструкции по предоставлению данных. |
См. также
- Полифилл
Intl.DateTimeFormatв FormatJS IntlDate.prototype.toLocaleString()Date.prototype.toLocaleDateString()Date.prototype.toLocaleTimeString()Temporal.Instant.prototype.toLocaleString()Temporal.PlainDate.prototype.toLocaleString()Temporal.PlainDateTime.prototype.toLocaleString()Temporal.PlainTime.prototype.toLocaleString()Temporal.PlainYearMonth.prototype.toLocaleString()Temporal.PlainMonthDay.prototype.toLocaleString()Temporal.ZonedDateTime.prototype.toLocaleString()
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat