Date.prototype.toLocaleDateString()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since иÑÐ»Ñ 2015 г..
ÐеÑод toLocaleDateString() возвÑаÑÐ°ÐµÑ ÑÑÑÐ¾ÐºÑ Ñ ÑзÑкозавиÑимÑм пÑедÑÑавлением ÑаÑÑи Ñ Ð´Ð°Ñой в ÑÑой даÑе. ÐовÑе аÑгÑменÑÑ locales и options позволÑÑÑ Ð¿ÑиложениÑм опÑеделÑÑÑ ÑзÑк, ÑÑи ÑоглаÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑоÑмаÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¸ÑполÑзоваÑÑÑÑ, а Ñакже менÑÑÑ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ðµ ÑÑого меÑода. Ð ÑÑаÑÑÑ
ÑеализаÑиÑÑ
, игноÑиÑÑÑÑиÑ
аÑгÑменÑÑ locales и options, иÑполÑзÑÐµÐ¼Ð°Ñ Ð»Ð¾ÐºÐ°Ð»Ñ Ð¸ ÑоÑма возвÑаÑÑнной ÑÑÑоки Ñеликом завиÑÐ¸Ñ Ð¾Ñ ÑеализаÑии.
ÐÑи ÑоÑмаÑиÑовании болÑÑого колиÑеÑÑва Ð´Ð°Ñ Ð»ÑÑÑим ваÑианÑом бÑÐ´ÐµÑ Ñоздание обÑекÑа Intl.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 изменÑÑÑ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ðµ ÑÑнкÑии и позволÑÑÑ Ð¿ÑиложениÑм опÑеделÑÑÑ ÑзÑк, пÑавила ÑоÑмаÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾ÑоÑого, ÑледÑÐµÑ Ð¸ÑполÑзоваÑÑ.
Ð ÑеализаÑиÑÑ
, поддеÑживаÑÑиÑ
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() Ð´Ð»Ñ Ð¿Ð¾Ð´ÑобноÑÑей иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑÑиÑ
паÑамеÑÑов.
ÐÑимеÑÑ
>ÐÑполÑзование меÑода toLocaleDateString()
ÐÑи иÑполÑзовании без ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸ возвÑаÑаеÑÑÑ ÑÑÑока, оÑÑоÑмаÑиÑÐ¾Ð²Ð°Ð½Ð½Ð°Ñ Ð² ÑооÑвеÑÑÑвии Ñ Ð»Ð¾ÐºÐ°Ð»ÑÑ Ð¸ опÑиÑми по ÑмолÑаниÑ.
var date = new Date(Date.UTC(2012, 11, 12, 3, 0, 0));
// ÐÑвод toLocaleDateString() без аÑгÑменÑов завиÑÐ¸Ñ Ð¾Ñ ÑеализаÑии,
// локали по ÑмолÑÐ°Ð½Ð¸Ñ Ð¸ ÑаÑового поÑÑа по ÑмолÑаниÑ
console.log(date.toLocaleDateString());
// "12/11/2012", еÑли код запÑÑен Ñ Ð»Ð¾ÐºÐ°Ð»ÑÑ en-US и ÑаÑовÑм поÑÑом America/Los_Angeles
ÐÑовеÑка поддеÑжки паÑамеÑÑов locales и options
ÐаÑамеÑÑÑ locales и options поддеÑживаÑÑÑÑ ÐµÑÑ Ð½Ðµ вÑеми бÑаÑзеÑами. ÐÐ»Ñ Ð¿ÑовеÑки Ñого, поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð»Ð¸ иÑ
Ñже ÑеализаÑиÑ, можно заÑÑебоваÑÑ Ð½ÐµÑÑÑеÑÑвÑÑÑÑÑ Ð¼ÐµÑÐºÑ ÑзÑка и пÑовеÑиÑÑ, бÑÐ´ÐµÑ Ð»Ð¸ вÑбÑоÑено иÑклÑÑение RangeError:
function toLocaleDateStringSupportsLocales() {
try {
new Date().toLocaleDateString("i");
} catch (e) {
return e.name === "RangeError";
}
return false;
}
ÐÑполÑзование паÑамеÑÑа locales
ÐÑÐ¾Ñ Ð¿ÑÐ¸Ð¼ÐµÑ Ð¿Ð¾ÐºÐ°Ð·ÑÐ²Ð°ÐµÑ Ð½ÐµÐºÐ¾ÑоÑÑе локализованнÑе ÑоÑмаÑÑ Ð´Ð°ÑÑ. ÐÐ»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ ÑоÑмаÑа ÑзÑка, иÑполÑзÑемого в полÑзоваÑелÑÑком инÑеÑÑейÑе ваÑего пÑиложениÑ, ÑбедиÑеÑÑ, ÑÑо Ð²Ñ Ñказали ÑÑÐ¾Ñ ÑзÑк (и, возможно, неÑколÑко запаÑнÑÑ
ÑзÑков) ÑеÑез аÑгÑÐ¼ÐµÐ½Ñ locales:
var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
// ФоÑмаÑиÑование ниже пÑедполагаеÑ, ÑÑо меÑÑнÑй ÑаÑовой поÑÑ Ñавен
// America/Los_Angeles Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸ СШÐ
// РамеÑиканÑком английÑком иÑполÑзÑеÑÑÑ Ð¿Ð¾ÑÑдок меÑÑÑ-денÑ-год
console.log(date.toLocaleDateString("en-US"));
// "12/19/2012"
// РбÑиÑанÑком английÑком иÑполÑзÑеÑÑÑ Ð¿Ð¾ÑÑдок денÑ-меÑÑÑ-год
console.log(date.toLocaleDateString("en-GB"));
// "20/12/2012"
// РкоÑейÑком иÑполÑзÑеÑÑÑ Ð¿Ð¾ÑÑдок год-меÑÑÑ-денÑ
console.log(date.toLocaleDateString("ko-KR"));
// "2012. 12. 20."
// РболÑÑинÑÑве аÑабоÑзÑÑнÑÑ
ÑÑÑан иÑполÑзÑÑÑ Ð½Ð°ÑÑоÑÑие аÑабÑкие ÑиÑÑÑ
console.log(date.toLocaleDateString("ar-EG"));
// "Ù¢Ù â/١٢â/٢٠١٢"
// РЯпонии пÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑÑ Ð·Ð°Ñ
оÑеÑÑ Ð¸ÑполÑзоваÑÑ ÑпонÑкий календаÑÑ,
// в коÑоÑом 2012 год ÑвлÑеÑÑÑ 24-м годом ÑÑÑ Ð¥ÐµÐ¹Ñей
console.log(date.toLocaleDateString("ja-JP-u-ca-japanese"));
// "24/12/20"
// ÐÑли запÑаÑиваемÑй ÑзÑк Ð¼Ð¾Ð¶ÐµÑ Ð½Ðµ поддеÑживаÑÑÑÑ, напÑимеÑ
// балийÑкий, оÑкаÑÑваемÑÑ Ð½Ð° запаÑной ÑзÑк, в данном ÑлÑÑае индонезийÑкий
console.log(date.toLocaleDateString(["ban", "id"]));
// "20/12/2012"
ÐÑполÑзование паÑамеÑÑа options
РезÑлÑÑаÑ, пÑедоÑÑавлÑемÑй меÑодом toLocaleDateString(), Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½Ð°ÑÑÑоен Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¿Ð°ÑамеÑÑа options:
var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
// ÐапÑаÑиваем Ð´ÐµÐ½Ñ Ð½ÐµÐ´ÐµÐ»Ð¸ вмеÑÑе Ñ Ð´Ð»Ð¸Ð½Ð½Ñм ÑоÑмаÑом даÑÑ
var options = {
weekday: "long",
year: "numeric",
month: "long",
day: "numeric",
};
console.log(date.toLocaleDateString("de-DE", options));
// "Donnerstag, 20. Dezember 2012"
// ÐÑиложение Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ñ
оÑеÑÑ Ð¸ÑполÑзоваÑÑ UTC и показаÑÑ ÑÑо
options.timeZone = "UTC";
options.timeZoneName = "short";
console.log(date.toLocaleDateString("en-US", options));
// "Thursday, December 20, 2012, GMT"
СпеÑиÑикаÑии
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-date.prototype.tolocaledatestring> |
| ECMAScript® 2027 Internationalization API Specification> # sup-date.prototype.tolocaledatestring> |