Date.prototype.toLocaleDateString()
åºçº¿
广æ³å¯ç¨
èª 2015å¹´7æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
toLocaleDateString() æ¹æ³è¿åæå®æ¥æå¯¹è±¡æ¥æé¨åçå符串ï¼è¯¥åç¬¦ä¸²æ ¼å¼å ä¸åè¯è¨èä¸åã卿¯æ Intl.DateTimeFormat API çå®ç°ä¸ï¼è¯¥æ¹æ³ä»
æ¯è°ç¨äº Intl.DateTimeFormat æ¹æ³ã
å°è¯ä¸ä¸
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 åæ°ä½¿ç¨åºè½å¤æå®ä½¿ç¨åªç§è¯è¨æ ¼å¼åè§åï¼å
许å®å¶è¯¥æ¹æ³çè¡ä¸ºï¼behaviorï¼ã
卿¯æ Intl.DateTimeFormat API çå®ç°ä¸ï¼è¿äºåæ°ä¸æé 彿°çåæ°å®å
¨å¯¹åºãè对äºä¸æ¯æ Intl.DateTimeFormat çå®ç°ï¼åè¦æ±å½æ°å¿½ç¥è¿ä¸¤ä¸ªåæ°ï¼ä½¿å¾å½æ°ä½¿ç¨çåºåï¼localeï¼ä»¥åè¿åçåç¬¦ä¸²çæ ¼å¼å®å
¨åå³äºå®ç°ã
localeså¯é-
表示缩åè¯è¨ä»£ç ï¼BCP 47 language tagï¼çåç¬¦ä¸²ï¼æç±æ¤ç±»åç¬¦ä¸²ç»æçæ°ç»ã对åºäº
Intl.DateTimeFormat()æé 彿°çlocalesåæ°ãå¨ä¸æ¯æ
Intl.DateTimeFormatçå®ç°ä¸ï¼è¯¥åæ°ä¼è¢«å¿½ç¥ï¼å¹¶ä¸é常ä¼ä½¿ç¨ä¸»æºçåºå设置ã optionså¯é-
ä¸ä¸ªè°æ´è¾åºæ ¼å¼ç对象ã对åºäº
Intl.DateTimeFormat()æé 彿°çoptionsåæ°ãå¦æå ¶dayPeriodãhourãminuteãsecondåfractionalSecondDigits屿§å ¨æ¯ undefinedï¼åhourãminuteãsecondè¿ä¸ä¸ªå±æ§ä¼è¢«è®¾ç½®ä¸º"numeric"ãå¨ä¸æ¯æ
Intl.DateTimeFormatçå®ç°ä¸ï¼è¯¥åæ°ä¼è¢«å¿½ç¥ã
åè§ Intl.DateTimeFormat() æé 彿°ä»¥è¯¦ç»äºè§£è¿äºåæ°ä»¥åå¦ä½ä½¿ç¨å®ä»¬ã
è¿åå¼
ä¸ä¸ªè¡¨ç¤ºç»å®ç Date å®ä¾çæ¥æé¨åï¼ä¸ä¸è¯è¨ç¸å
³çå符串ã
卿¯æ Intl.DateTimeFormat çå®ç°ä¸ï¼è¯¥æ¹æ³çä»·äº new Intl.DateTimeFormat(locales, options).format(date)ï¼å
¶ä¸ç options å·²éè¿ä¸è¿°çè§åè¿è¡è§èåã
æ§è½
å½éè¦æ ¼å¼å大éçæ¥æï¼dateï¼æ¶ï¼æå¥½å建ä¸ä¸ª Intl.DateTimeFormat 对象ï¼å¹¶ä½¿ç¨å
¶ format() æ¹æ³ã
示ä¾
>ä½¿ç¨ toLocaleDateString()
没ææå®åºåï¼localeï¼æ¶ï¼è¿åä¸ä¸ªä½¿ç¨é»è®¤åºååæ ¼å¼è®¾ç½®ï¼optionsï¼çæ ¼å¼åå符串ã
const date = new Date(Date.UTC(2012, 11, 12, 3, 0, 0));
// toLocaleDateString() 䏿ºå¸¦åæ°æ¶ï¼å
¶é»è®¤åºååæ¶åºåå³äºå®ç°
console.log(date.toLocaleDateString());
// "2012/12/12" å¦æå¨ zh-CN åºå以åä¸å
«åºï¼å京æ¶é´ï¼ä¸è¿è¡
æ£æµ locales å options åæ°æ¯ææ åµ
locales å options 忰䏿¯ææçæµè§å¨é½æ¯æãä¸ºäºæ£æµä¸ç§å®ç°ç¯å¢ï¼implementationï¼æ¯å¦æ¯æå®ä»¬ï¼å¯ä»¥ä½¿ç¨ä¸åæ³çè¯è¨æ ç¾ï¼å¦æå®ç°ç¯å¢æ¯æè¯¥åæ°ï¼åä¼æåº RangeError å¼å¸¸ï¼åä¹ä¼å¿½ç¥åæ°ã
function toLocaleDateStringSupportsLocales() {
try {
new Date().toLocaleDateString("i");
} catch (e) {
return e.name === "RangeError";
}
return false;
}
ä½¿ç¨ locales
ä¸ä¾å±ç¤ºäºæ¬å°åæ¥ææ ¼å¼çä¸äºååã为äºå¨åºç¨çç¨æ·çé¢å¾å°æç§è¯è¨çæ¥ææ ¼å¼ï¼å¿
须确ä¿ä½¿ç¨ locales åæ°æå®äºè¯¥è¯è¨ï¼å¯è½è¿éè¦è®¾ç½®æäºåéè¯è¨ï¼ã
const date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
// 以䏿 ¼å¼åè¾åºåå设使ç¨åºåçæ¬å°æ¶åºï¼
// 对äºç¾å½ï¼ä¸º America/Los_Angeles
// ç¾å¼è±è¯ï¼ä½¿ç¨ month-day-year ç顺åº
console.log(date.toLocaleDateString("en-US"));
// "12/20/2012"
// è±å¼è±è¯ï¼ä½¿ç¨ day-month-year ç顺åº
console.log(date.toLocaleDateString("en-GB"));
// "20/12/2012"
// é©å½ï¼ä½¿ç¨ year-month-day ç顺åº
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"));
// "Û±Û³Û¹Û±/Û¹/Û³Û°"
// 大夿°é¿æä¼¯å½å®¶ä½¿ç¨çæ£çé¿æä¼¯æ°å
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
å¯ä»¥ä½¿ç¨ options åæ°æ¥èªå®ä¹ toLocaleDateString æ¹æ³è¿åçå符串ã
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"
// åºç¨ç¨åºå¯è½æ³è¦ä½¿ç¨ UTC æ¶é´ï¼å¹¶ä½¿å
¶å¯è§
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> |