Spec-Zone.ru › JavaScript

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)

Спецификации

Спецификация
ECMAScript® 2027 Internationalization API Specification
# datetimeformat-objects

Совместимость с браузерами

Настольные компьютеры Мобильные устройства Сервер
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До версии 71 formatToParts() возвращал объект с некорректно написанным ключом типа dayperiod. Версия 71 и более поздние используют определенный в спецификации dayPeriod. См. баг 41402623.
18
51
44До версии 58 formatToParts() возвращал объект с некорректно написанным ключом типа dayperiod. Версия 58 и более поздние используют определенный в спецификации dayPeriod. См. баг 41402623.
11
57До версии 71 formatToParts() возвращал объект с некорректно написанным ключом типа dayperiod. Версия 71 и более поздние используют определенный в спецификации dayPeriod. См. баг 41402623.
56
43До версии 50 formatToParts() возвращал объект с некорректно написанным ключом типа dayperiod. Версия 50 и более поздние используют определенный в спецификации dayPeriod. См. баг 41402623.
11
7.0До версии 71 formatToParts() возвращал объект с некорректно написанным ключом типа dayperiod. Версия 71 и более поздние используют определенный в спецификации dayPeriod. См. баг 41402623.
57До версии 71 formatToParts() возвращал объект с некорректно написанным ключом типа dayperiod. Версия 71 и более поздние используют определенный в спецификации dayPeriod. См. баг 41402623.
11
1.0.0
1.8
8.0.0До версии 12.0.0 formatToParts() возвращал объект с некорректно написанным ключом типа 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
  • Intl
  • Date.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

Spec-Zone.ru

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