Temporal.ZonedDateTime.prototype.toLocaleString()
Базовая Ограниченная доступность
Эта функция не является Базовой, потому что она не работает в некоторых из наиболее широко используемых браузеров.
Метод toLocaleString() экземпляров Temporal.ZonedDateTime возвращает строку с зависящим от языка представлением этой даты и времени. В реализациях с поддержкой API Intl.DateTimeFormat этот метод делегирует Intl.DateTimeFormat и передает эту дату-время, преобразованную в Temporal.Instant (поскольку Intl.DateTimeFormat не может напрямую форматировать Temporal.ZonedDateTime).
Каждый раз, когда вызывается toLocaleString, ему приходится выполнять поиск в большой базе данных строк локализации, что потенциально неэффективно. Когда метод вызывается много раз с одними и теми же аргументами, лучше создать объект Intl.DateTimeFormat и использовать его метод format(), потому что объект DateTimeFormat запоминает переданные ему аргументы и может решить кэшировать часть базы данных, чтобы будущие вызовы format могли искать строки локализации в более ограниченном контексте. Однако в настоящее время Intl.DateTimeFormat не поддерживает форматирование объектов Temporal.ZonedDateTime, поэтому вы должны сначала преобразовать их в объекты Temporal.Instant, прежде чем передавать их в format().
Синтаксис
toLocaleString() toLocaleString(locales) toLocaleString(locales, options)
Параметры
Параметры locales и options настраивают поведение функции и позволяют приложениям указывать язык, чьи соглашения о форматировании должны использоваться.
В реализациях, которые поддерживают API Intl.DateTimeFormat, эти параметры точно соответствуют параметрам конструктора Intl.DateTimeFormat(). Реализации без поддержки Intl.DateTimeFormat возвращают точно ту же строку, что и toString(), игнорируя оба параметра.
-
localesНеобязательно - Строка с языковым тегом BCP 47 или массив таких строк. Соответствует параметру
localesконструктораIntl.DateTimeFormat(). -
optionsНеобязательно - Объект, настраивающий формат вывода. Соответствует параметру
optionsконструктораIntl.DateTimeFormat(). Если календарь этой даты-времени не является"iso8601", опцияcalendarдолжна быть предоставлена с тем же значением; в противном случае, если календарь этой даты-времени является"iso8601", опцияcalendarможет быть любым значением. ОпцияtimeZoneне должна быть предоставлена, так как она автоматически устанавливается какtimeZoneIdдаты-времени. Что касается опций компонентов даты-времени и сокращений стиля (dateStyleиtimeStyle), опции должны следовать одной из этих форм:- Не предоставлять ни одну из них:
year,month,day,hour,minuteиsecondпо умолчанию будут установлены в"numeric". - Предоставить хотя бы одну из
dateStyleилиtimeStyle: компоненты даты-времени будут установлены в соответствии с указанным стилем и локалью. - Предоставить некоторые опции компонентов даты-времени. В вывод будут включены только указанные компоненты даты-времени.
- Не предоставлять ни одну из них:
Подробности об этих параметрах и способах их использования см. в конструкторе Intl.DateTimeFormat().
Возвращаемое значение
Строка, представляющая заданную дату-время в соответствии с языковыми соглашениями.
В реализациях с Intl.DateTimeFormat это эквивалентно new Intl.DateTimeFormat(locales, { ...options, timeZone: dateTime.timeZoneId }).format(dateTime.toInstant()), где options был нормализован, как описано выше.
Примечание: В большинстве случаев форматирование, возвращаемое toLocaleString(), является согласованным. Однако вывод может варьироваться между реализациями, даже в пределах одной и той же локали — вариации вывода являются преднамеренными и разрешены спецификацией. Это также может быть не то, что вы ожидаете. Например, строка может использовать неразрывные пробелы или быть окружена двунаправленными управляющими символами. Не следует сравнивать результаты toLocaleString() с жестко заданными константами.
Исключения
-
RangeError - Выбрасывается, если любая из опций недействительна.
-
TypeError - Выбрасывается, если любая из опций не имеет ожидаемого типа.
Примеры
Использование toLocaleString()
Базовое использование этого метода без указания locale возвращает отформатированную строку в локали по умолчанию и с настройками по умолчанию.
const zdt = Temporal.ZonedDateTime.from( "2021-08-01T12:34:56-04:00[America/New_York]", ); console.log(zdt.toLocaleString()); // 8/1/2021, 12:34:56 PM EDT (assuming en-US locale)
Если календарь даты не соответствует календарю по умолчанию для локали, и календарь даты не является iso8601, необходимо явно предоставить опцию calendar с тем же значением.
const zdt = Temporal.ZonedDateTime.from(
"2021-08-01T12:34:56+09:00[Asia/Tokyo][u-ca=japanese]",
);
// The ja-JP locale uses the Gregorian calendar by default
zdt.toLocaleString("ja-JP", { calendar: "japanese" }); // R3/8/1 12:34:56 JST
Использование toLocaleString() с опциями
Вы можете настроить, какие части даты будут включены в вывод, предоставив параметр options.
const zdt = Temporal.ZonedDateTime.from(
"2021-08-01T12:34:56+09:00[Asia/Tokyo][u-ca=japanese]",
);
zdt.toLocaleString("ja-JP", {
calendar: "japanese",
dateStyle: "full",
timeStyle: "full",
}); // 令和3年8月1日日曜日 12時34分56秒 日本標準時
zdt.toLocaleString("ja-JP", {
calendar: "japanese",
year: "numeric",
month: "long",
hour: "numeric",
timeZoneName: "shortGeneric",
}); // 令和3年8月 12時 JST
zdt.toLocaleString("ja-JP", {
calendar: "japanese",
year: "numeric",
hour: "numeric",
minute: "numeric",
}); // 令和3年 12:34
Спецификации
Совместимость с браузерами
| Десктопные | Мобильные | Серверные | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 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 | |
toLocaleString |
144 |
144 |
139 |
128 |
preview |
144 |
139 |
95 |
No |
No |
144 |
No |
1.4.0 |
2.7 |
26.0.0 |
См. также
Temporal.ZonedDateTimeIntl.DateTimeFormatTemporal.ZonedDateTime.prototype.toJSON()Temporal.ZonedDateTime.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/Temporal/ZonedDateTime/toLocaleString