Date.prototype.toLocaleString()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since иÑÐ»Ñ 2015 г..
ÐеÑод toLocaleString() ÑкземплÑÑов Date возвÑаÑÐ°ÐµÑ ÑÑÑокÑ, ÑодеÑжаÑÑÑ Ð·Ð°Ð²Ð¸Ñимое Ð¾Ñ ÑзÑка пÑедÑÑавление ÑÑой даÑÑ Ð² локалÑном ÑаÑовом поÑÑе. Ð ÑеализаÑиÑÑ
, поддеÑживаÑÑиÑ
Intl.DateTimeFormat API, ÑÑÐ¾Ñ Ð¼ÐµÑод пÑоÑÑо вÑзÑÐ²Ð°ÐµÑ Intl.DateTimeFormat.
ÐÑи каждом вÑзове toLocaleString пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð¿Ð¾Ð¸Ñк по болÑÑой базе локализованнÑÑ
ÑÑÑок, ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½ÐµÑÑÑекÑивнÑм. Ðогда меÑод вÑзÑваеÑÑÑ Ð¼Ð½Ð¾Ð³Ð¾ Ñаз Ñ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñми паÑамеÑÑами, лÑÑÑе ÑоздаÑÑ Ð¾Ð±ÑÐµÐºÑ Intl.DateTimeFormat и иÑполÑзоваÑÑ ÐµÐ³Ð¾ меÑод format(), поÑÐ¾Ð¼Ñ ÑÑо обÑÐµÐºÑ DateTimeFormat Ð·Ð°Ð¿Ð¾Ð¼Ð¸Ð½Ð°ÐµÑ Ð¿ÐµÑеданнÑе ÐµÐ¼Ñ Ð¿Ð°ÑамеÑÑÑ Ð¸ Ð¼Ð¾Ð¶ÐµÑ ÐºÐµÑиÑоваÑÑ Ð´Ð°Ð½Ð½Ñе, ÑÑÐ¾Ð±Ñ Ð¿Ð¾ÑледÑÑÑие вÑÐ·Ð¾Ð²Ñ format могли вÑполнÑÑÑ Ð¿Ð¾Ð¸Ñк Ñ Ð±Ð¾Ð»ÐµÐµ опÑеделÑннÑм конÑекÑÑом.
ÐнÑеÑакÑивнÑй пÑимеÑ
const event = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
// British English uses day-month-year order and 24-hour time without AM/PM
console.log(event.toLocaleString("en-GB", { timeZone: "UTC" }));
// Expected output: "20/12/2012, 03:00:00"
// Korean uses year-month-day order and 12-hour time with AM/PM
console.log(event.toLocaleString("ko-KR", { timeZone: "UTC" }));
// Expected output: "2012. 12. 20. ì¤ì 3:00:00"
СинÑакÑиÑ
toLocaleString()
toLocaleString(locales)
toLocaleString(locales, options)
ÐаÑамеÑÑÑ
ÐаÑамеÑÑÑ locales и options изменÑÑÑ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ðµ ÑÑнкÑии и позволÑÑÑ Ð¿ÑиложениÑм опÑеделÑÑÑ ÑзÑк, пÑавила ÑоÑмаÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾ÑоÑого, ÑледÑÐµÑ Ð¸ÑполÑзоваÑÑ.
Ð ÑеализаÑиÑÑ
, поддеÑживаÑÑиÑ
Intl.DateTimeFormat API, ÑÑи паÑамеÑÑÑ ÑооÑвеÑÑÑвÑÑÑ Ð¿Ð°ÑамеÑÑам конÑÑÑÑкÑоÑа 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).
ÐÑимеÑание:
РболÑÑинÑÑве ÑлÑÑаев ÑоÑмаÑиÑование, возвÑаÑаемое toLocaleString(), единообÑазно. Ðднако ÑезÑлÑÑÐ°Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑазнÑм в завиÑимоÑÑи Ð¾Ñ Ð²Ñемени, ÑзÑка и ÑеализаÑии â ÑÑо допÑÑкаеÑÑÑ ÑпеÑиÑикаÑией. Ðе ÑледÑÐµÑ ÑÑавниваÑÑ ÑезÑлÑÑÐ°Ñ toLocaleString() Ñо ÑÑаÑиÑеÑкими знаÑениÑми.
ÐÑимеÑÑ
>ÐÑполÑзование toLocaleString()
ÐÑи иÑполÑзовании без ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸ возвÑаÑаеÑÑÑ ÑÑÑока, оÑÑоÑмаÑиÑÐ¾Ð²Ð°Ð½Ð½Ð°Ñ Ð² ÑооÑвеÑÑÑвии Ñ Ð»Ð¾ÐºÐ°Ð»ÑÑ Ð¸ наÑÑÑойками по ÑмолÑаниÑ.
const date = new Date(Date.UTC(2012, 11, 12, 3, 0, 0));
// ÐÑвод toLocaleString() без паÑамеÑÑов завиÑÐ¸Ñ Ð¾Ñ ÑеализаÑии,
// локали по ÑмолÑÐ°Ð½Ð¸Ñ Ð¸ ÑаÑового поÑÑа по ÑмолÑаниÑ
console.log(date.toLocaleString());
// "12/11/2012, 7:00:00 PM", еÑли код запÑÑен Ñ Ð»Ð¾ÐºÐ°Ð»ÑÑ en-US и ÑаÑовÑм поÑÑом America/Los_Angeles
ÐÑовеÑка поддеÑжки паÑамеÑÑов locales и options
ÐаÑамеÑÑÑ locales и options могÑÑ Ð¿Ð¾Ð´Ð´ÐµÑживаÑÑÑÑ Ð½Ðµ во вÑеÑ
ÑеализаÑиÑÑ
. Ð ÑеализаÑиÑÑ
без поддеÑжки инÑеÑнаÑионализаÑии toLocaleString() вÑегда иÑполÑзÑÐµÑ ÑиÑÑемнÑÑ Ð»Ð¾ÐºÐ°Ð»Ñ, ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ Ð½Ðµ Ñем, ÑÑо вам нÑжно. ÐоÑколÑÐºÑ Ð»ÑÐ±Ð°Ñ ÑеализаÑиÑ, поддеÑживаÑÑÐ°Ñ Ð¿Ð°ÑамеÑÑÑ locales и options, должна поддеÑживаÑÑ Intl API, пÑовеÑиÑÑ Ð½Ð°Ð»Ð¸Ñие поÑледней можно Ñаким ÑпоÑобом:
function toLocaleStringSupportsLocales() {
return (
typeof Intl === "object" &&
!!Intl &&
typeof Intl.DateTimeFormat === "function"
);
}
ÐÑполÑзование паÑамеÑÑа locales
ÐÑÐ¾Ñ Ð¿ÑÐ¸Ð¼ÐµÑ Ð¿Ð¾ÐºÐ°Ð·ÑÐ²Ð°ÐµÑ Ð½ÐµÐºÐ¾ÑоÑÑе локализованнÑе ÑоÑмаÑÑ Ð´Ð°ÑÑ Ð¸ вÑемени. ÐÐ»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ ÑоÑмаÑа ÑзÑка, иÑполÑзÑемого в полÑзоваÑелÑÑком инÑеÑÑейÑе ваÑего пÑиложениÑ, ÑбедиÑеÑÑ, ÑÑо Ð²Ñ Ñказали ÑÑÐ¾Ñ ÑзÑк (и, возможно, неÑколÑко запаÑнÑÑ
ÑзÑков) иÑполÑзÑÑ Ð¿Ð°ÑамеÑÑ locales:
const date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
// ФоÑмаÑиÑование ниже пÑедполагаеÑ, ÑÑо меÑÑнÑй ÑаÑовой поÑÑ Ñавен
// America/Los_Angeles Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸ СШÐ
// РамеÑиканÑком английÑком иÑполÑзÑеÑÑÑ Ð¿Ð¾ÑÑдок меÑÑÑ-денÑ-год
// и 12-ÑаÑовой ÑоÑÐ¼Ð°Ñ Ð²Ñемени
console.log(date.toLocaleString("en-US"));
// "12/19/2012, 7:00:00 PM"
// РбÑиÑанÑком английÑком иÑполÑзÑеÑÑÑ Ð¿Ð¾ÑÑдок денÑ-меÑÑÑ-год
// и 24-ÑаÑовой ÑоÑÐ¼Ð°Ñ Ð²Ñемени
console.log(date.toLocaleString("en-GB"));
// "20/12/2012 03:00:00"
// РкоÑейÑком иÑполÑзÑеÑÑÑ Ð¿Ð¾ÑÑдок год-меÑÑÑ-денÑ
// и 12-ÑаÑовой ÑоÑÐ¼Ð°Ñ Ð²Ñемени
console.log(date.toLocaleString("ko-KR"));
// "2012. 12. 20. ì¤í 12:00:00"
// РболÑÑинÑÑве аÑабоÑзÑÑнÑÑ
ÑÑÑан иÑполÑзÑÑÑ Ð½Ð°ÑÑоÑÑие аÑабÑкие ÑиÑÑÑ
console.log(date.toLocaleString("ar-EG"));
// "Ù¢Ù â/١٢â/٢٠١٢ Ù¥:Ù Ù :٠٠ص"
// РЯпонии пÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑÑ Ð·Ð°Ñ
оÑеÑÑ Ð¸ÑполÑзоваÑÑ ÑпонÑкий календаÑÑ,
// в коÑоÑом 2012 год ÑвлÑеÑÑÑ 24-м годом ÑÑÑ Ð¥ÐµÐ¹Ñей
console.log(date.toLocaleString("ja-JP-u-ca-japanese"));
// "24/12/20 12:00:00"
// ÐÑли запÑаÑиваемÑй ÑзÑк Ð¼Ð¾Ð¶ÐµÑ Ð½Ðµ поддеÑживаÑÑÑÑ, напÑимеÑ
// балийÑкий, оÑкаÑÑваемÑÑ Ð½Ð° запаÑной ÑзÑк, в данном ÑлÑÑае индонезийÑкий
console.log(date.toLocaleString(["ban", "id"]));
// "20/12/2012 11.00.00"
ÐÑполÑзование паÑамеÑÑа options
РезÑлÑÑаÑ, пÑедоÑÑавлÑемÑй меÑодом toLocaleString(), Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½Ð°ÑÑÑоен Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¿Ð°ÑамеÑÑа options:
const date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
// ÐапÑаÑиваем Ð´ÐµÐ½Ñ Ð½ÐµÐ´ÐµÐ»Ð¸ вмеÑÑе Ñ Ð´Ð»Ð¸Ð½Ð½Ñм ÑоÑмаÑом даÑÑ
var options = {
weekday: "long",
year: "numeric",
month: "long",
day: "numeric",
};
console.log(date.toLocaleString("de-DE", options));
// "Donnerstag, 20. Dezember 2012"
// ÐÑиложение Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ñ
оÑеÑÑ Ð¸ÑполÑзоваÑÑ UTC и показаÑÑ ÑÑо
options.timeZone = "UTC";
options.timeZoneName = "short";
console.log(date.toLocaleString("en-US", options));
// "Thursday, December 20, 2012, GMT"
// Ðногда даже в СШРнÑжен 24-Ñ
ÑаÑовой ÑоÑÐ¼Ð°Ñ Ð²Ñемени
console.log(date.toLocaleString("en-US", { hour12: false }));
// "12/19/2012, 19:00:00"
СпеÑиÑикаÑии
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-date.prototype.tolocalestring> |
| ECMAScript® 2027 Internationalization API Specification> # sup-date.prototype.tolocalestring> |