Spec-Zone.ru › JavaScript

Date.prototype.toLocaleDateString()

Базовый уровень Широко доступно

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с сентября 2017 года.

Метод toLocaleDateString() экземпляров Date возвращает строку с зависящим от языка представлением части даты в местном часовом поясе. В реализациях с поддержкой API Intl.DateTimeFormat этот метод делегирует Intl.DateTimeFormat.

Каждый раз, когда вызывается toLocaleDateString, ему приходится выполнять поиск в большой базе данных строк локализации, что потенциально неэффективно. Когда метод вызывается многократно с одними и теми же аргументами, лучше создать объект Intl.DateTimeFormat и использовать его метод format(), поскольку объект DateTimeFormat запоминает переданные ему аргументы и может решить кэшировать часть базы данных, чтобы будущие вызовы format могли искать строки локализации в более ограниченном контексте.

Попробуйте

const event = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
const options = {
  weekday: "long",
  year: "numeric",
  month: "long",
  day: "numeric",
};

console.log(event.toLocaleDateString("de-DE", options));
// Expected output (varies according to local timezone): Donnerstag, 20. Dezember 2012

console.log(event.toLocaleDateString("ar-EG", options));
// Expected output (varies according to local timezone): الخميس، ٢٠ ديسمبر، ٢٠١٢

console.log(event.toLocaleDateString(undefined, options));
// Expected output (varies according to local timezone and default locale): Thursday, December 20, 2012

Синтаксис

toLocaleDateString()
toLocaleDateString(locales)
toLocaleDateString(locales, options)

Параметры

Параметры locales и options настраивают поведение функции и позволяют приложениям указать язык, чьи правила форматирования должны использоваться.

В реализациях, поддерживающих API Intl.DateTimeFormat, эти параметры точно соответствуют параметрам конструктора Intl.DateTimeFormat(). Реализации без поддержки Intl.DateTimeFormat должны игнорировать оба параметра, делая используемую локаль и форму возвращаемой строки полностью зависящими от реализации.

locales Необязательный

Строка с тегом языка BCP 47 или массив таких строк. Соответствует параметру locales конструктора Intl.DateTimeFormat().

В реализациях без поддержки Intl.DateTimeFormat этот параметр игнорируется, и обычно используется локаль хоста.

options Необязательный

Объект, настраивающий формат вывода. Соответствует параметру options конструктора Intl.DateTimeFormat(). Опция timeStyle должна быть undefined, иначе будет выброшена ошибка TypeError. Если weekday, year, month и day имеют значение undefined, то year, month и day будут установлены в "numeric".

В реализациях без поддержки Intl.DateTimeFormat этот параметр игнорируется.

Смотрите конструктор Intl.DateTimeFormat() для получения подробной информации об этих параметрах и способах их использования.

Возвращаемое значение

Строка, представляющая часть даты, соответствующая заданной дате, согласно языковым соглашениям.

В реализациях с Intl.DateTimeFormat это эквивалентно new Intl.DateTimeFormat(locales, options).format(date), где options был нормализован, как описано выше.

Примечание: В большинстве случаев форматирование, возвращаемое toLocaleDateString(), является согласованным. Однако вывод может различаться между реализациями, даже в пределах одной и той же локали — вариации вывода являются преднамеренными и разрешены спецификацией. Результат также может быть не таким, как вы ожидаете. Например, строка может использовать неразрывные пробелы или быть окружена двунаправленными управляющими символами. Вам не следует сравнивать результаты toLocaleDateString() с жёстко закодированными константами.

Примеры

Использование toLocaleDateString()

Базовое использование этого метода без указания locale возвращает отформатированную строку в локали по умолчанию и с опциями по умолчанию.

const date = new Date(Date.UTC(2012, 11, 12, 3, 0, 0));

// toLocaleDateString() without arguments depends on the implementation,
// the default locale, and the default time zone
console.log(date.toLocaleDateString());
// "12/11/2012" if run in en-US locale with time zone America/Los_Angeles

Проверка поддержки параметров locales и options

Параметры locales и options могут не поддерживаться во всех реализациях, поскольку поддержка API интернационализации необязательна, и в некоторых системах может не быть необходимых данных. Для реализаций без поддержки интернационализации toLocaleDateString() всегда использует системную локаль, что может быть не тем, что вам нужно. Поскольку любая реализация, поддерживающая параметры locales и options, должна поддерживать API Intl, вы можете проверить наличие последнего для определения поддержки:

function toLocaleDateStringSupportsLocales() {
  return (
    typeof Intl === "object" &&
    !!Intl &&
    typeof Intl.DateTimeFormat === "function"
  );
}

Использование локалей

Этот пример демонстрирует некоторые вариации в форматах локализованных дат. Чтобы получить формат языка, используемого в пользовательском интерфейсе вашего приложения, убедитесь, что вы указали этот язык (и, возможно, некоторые резервные языки), используя аргумент locales:

const date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));

// formats below assume the local time zone of the locale;
// America/Los_Angeles for the US

// US English uses month-day-year order
console.log(date.toLocaleDateString("en-US"));
// "12/20/2012"

// British English uses day-month-year order
console.log(date.toLocaleDateString("en-GB"));
// "20/12/2012"

// Korean uses year-month-day order
console.log(date.toLocaleDateString("ko-KR"));
// "2012. 12. 20."

// Event for Persian, It's hard to manually convert date to Solar Hijri
console.log(date.toLocaleDateString("fa-IR"));
// "۱۳۹۱/۹/۳۰"

// Arabic in most Arabic speaking countries uses real Arabic digits
console.log(date.toLocaleDateString("ar-EG"));
// "٢٠‏/١٢‏/٢٠١٢"

// for Japanese, applications may want to use the Japanese calendar,
// where 2012 was the year 24 of the Heisei era
console.log(date.toLocaleDateString("ja-JP-u-ca-japanese"));
// "24/12/20"

// when requesting a language that may not be supported, such as
// Balinese, include a fallback language, in this case Indonesian
console.log(date.toLocaleDateString(["ban", "id"]));
// "20/12/2012"

Использование опций

Результаты, предоставляемые toLocaleDateString(), можно настроить с помощью параметра options:

const date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));

// Request a weekday along with a long date
const options = {
  weekday: "long",
  year: "numeric",
  month: "long",
  day: "numeric",
};
console.log(date.toLocaleDateString("de-DE", options));
// "Donnerstag, 20. Dezember 2012"

// An application may want to use UTC and make that visible
options.timeZone = "UTC";
options.timeZoneName = "short";
console.log(date.toLocaleDateString("en-US", options));
// "Thursday, December 20, 2012, UTC"

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

Спецификация
ECMAScript® 2027 Language Specification
# sec-date.prototype.tolocaledatestring
ECMAScript® 2027 Internationalization API Specification
# sup-date.prototype.tolocaledatestring

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

Десктопные Мобильные Серверные
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
toLocaleDateString
1
12
1
5
1
18
4
10.1
1
1.0
4.4
1
1.0.0
1.0
0.10.0
iana_time_zone_names
24
14
52
15
7
25
56
14
7
1.5
4.4
7
1.0.0
1.8
0.12.0
locales_parameter
24
12
29
15
10
25
56
14
10
1.5
4.4
10
1.0.0
1.8
1.0–1.8Доступны только данные локали для en-US.
13.0.0
0.12.0–13.0.0До версии 13.0.0 по умолчанию доступны только данные локали для en-US. Когда указаны другие локали, функция молчаливо возвращается к en-US. Чтобы сделать полные данные ICU (локаль) доступными до версии 13, см. документацию Node.js по опции --with-intl и способам предоставления данных.
options_parameter
24
12
29
15
10
25
56
14
10
1.5
4.4
10
1.0.0
1.0
0.12.0

Смотрите также

  • Intl.DateTimeFormat
  • Date.prototype.toLocaleString()
  • Date.prototype.toLocaleTimeString()
  • Date.prototype.toString()

© 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/Date/toLocaleDateString

Spec-Zone.ru

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