ãã®èšäºã¯ å¹³ææåŸã®æ¥ã2019幎4æ31æ¥ã«å¥ã®ã¢ã«ãŠã³ããããã¹ããããã®ããã¡ãã«ç§»è¡ããèšäºã§ãã仿޿ããããããããªãã§ãã ECMA 402 ã«ã€ããŠç¥ãã®ã¯æªããªããšæããŸããã
什åå 幎ããã§ãšãããããŸã ð
ããŠãä»åã¯æ°å¹Žå·ã«ãµãããã International Date format ã§åæŠã衚瀺ããæ¹æ³ã«ã€ããŠæžããŠãããããšæããŸãã
JavaScript Intl.DateTimeFormat
ãªããžã§ã¯ãã䜿ãã°ãèšèªãšããŒã±ã«ã«ç¹åããæ¥ä»ãšæå»ã®ãã©ãŒããããå¯èœã«ãªããŸãã
The ECMAScript Internationalization APIïŒåœéæšæºå APIïŒ ã¯ãæ¥ä»ãšæå»ãããŠè²šå¹£ã®è¡šç€ºã®ããŒã«ã©ã€ãºã JavaScript ã§å¯èœã«ããããã«äœããããã®ã§ã2010 幎ã«åçãçºè¡ãããŠçŸåšã¯ç¬¬ïŒçãææ°ã§ãããã® API ã¯ææ°ã®ãã©ãŠã¶ã§ã¯ãã§ã«ãµããŒãæžã§ãã(åç § Can I use)
Intl
ãªããžã§ã¯ãã®ããããã£ã®äžã€ãDateTimeFormat
ãèšèªã«å¿ããæ¥ä»ãšæå»ã®ãã©ãŒããããå¯èœã«ããŸãã
ãšããããšã¯æ¥æ¬ã®ããŒã«ã«ã¿ã€ã ã什åã§è¡šçŸã§ãããšããããšãªã®ã§ãããã ãããã©ãŠã¶ãã¢ããããŒããããŠããã°ã®è©±ã§ããã
çµè«ãèšã£ãŠãããŸããšãçŸæç¹ã§ææ°ã® Chrome ã§ã¯ãŸã 什åãåæŠã«è¿œå ãããŠããŸããã®ã§ããã®å ã®ã³ãŒããæ£åŒã«ã¢ãŠããããããã«ã¯ãChrome Canary çãå¿ èŠã§ããïŒãã®èšäºãæ¥ãã§æžããã®ã§ããããç§ã®ããŒã±ã«ã§ã¯æå·®ã§ãŸã å¹³æãšããããšãããä»ã®ãã©ãŠã¶ã詊ããŠããŸãããðââïžãFirefox ã§ã¯ä»ã®ãšãããŸã ã®ããã§ããMozilla ã® Emma ããæ å ±ããããšãããããŸãããïŒ
ïŒçŸåšã¯ãµããŒãæžïŒ
ð Using DateTimeFormat
ããŒã±ã«ãšèšèªãèšå®ãããŠããªãå Žå㯠DateTimeFormat
ã¯ããã©ã«ãã®èšå®ã§è¡šç€ºãããŸãã
ã§ãã®ã§ãç±³åœãµã³ãã©ã³ã·ã¹ã³ã«ããç§ãèªåã®ãã·ã³äžã®ãã©ãŠã¶ã§ãã®ã³ãŒããåãããšãã®ããã«ä»æ¥ã®æ¥ä»ã en-US ã§è¡šç€ºããŸãã
new Intl.DateTimeFormat().format(Date.now())
ïŒæ¬åœã¯ç§ã®ã¿ã€ã ãŸãŒã³ã§ã¯ãŸã 4æ31æ¥ãªã®ã§ãããæ¥ä»ãå€ãã£ãçšã§ðïŒ
"5/1/2019"
ð¯ðµ Specifying Locales
ããã§locales åŒæ°ã䜿ããããŒã±ã«èå¥åïŒèšèªã³ãŒããšãåœãå°åã³ãŒãïŒãèšå®ããããšã«ãã£ãŠæ¥ä»ãšæå»ãããŒã«ã©ã€ãºããŠã¿ãŸãããã
äŸãã°ããã·ã¢ã®å Žåã
new Intl.DateTimeFormat('ru-RU').format(Date.now())
// "02.04.2019" ãšè¡šç€ºããã
ãããŠæ¥æ¬ã®å Žåã
new Intl.DateTimeFormat('ja-JP').format(Date.now())
// "2019/5/1"
ããããããã§ã¯ã°ã¬ãŽãªãªæŠã®ãŸãŸã§ããå®å šã«åæŠã§è¡šç€ºããã«ã¯ã©ããããããã§ããããã
ããŒã±ã«èå¥å ja-JP
ã ãã§ã¯è¶³ããŸããã®ã§ -u-ca-japanese
ãšããæ¡åŒµããŒã远å ãã ja-JP-u-ca-japanese
ãšããŸãããã
ãªãã ãé·ãã®ã§ããã
-u
æ¡åŒµããŒã®èå¥ã¯
-ca
ã«ã¬ã³ããŒã»ã¿ã€ãã®
-japanese
æ¥æ¬ã®ã«ã¬ã³ããŒã衚瀺
ãšããæå³ã«ãªããŸãã詳ãã㯠Unicode Technical Standard #35 ã§ã
ïŒãšã©ãªãŒããžã£ã³ã¯ãªã¹ãã ãããæ¡åŒµããŒã«ã€ããŠè©³ããæ å ±ã®ãããªã³ã¯ãæããŠãã ãã£ãŠãããããšãããããŸããïŒïŒ
new Intl.DateTimeFormat('ja-JP-u-ca-japanese').format(Date.now())
// æšæ¥ãŸã§ã¯ã"31/4/30"
// 仿¥ã¯ "1/5/1"
ããŠåæŠã£ãœã幎å·ã§ã¯ãããŸãããå å·ã衚瀺ãããŠããŸãããã©ããããè¯ãã§ããããã
å
å·ã衚瀺ããã«ã¯ options åŒæ°ã®ããã®å Žå era
ã long
ã«èšå®ããŸãããã
new Intl.DateTimeFormat('ja-JP-u-ca-japanese', {era:'long'}).format(Date.now())
// "什å1/5/1"
ããŠããã§ã"什å1/5/1" ãšè¡šç€ºãããããã䜿ãã®ãã©ãŠã¶ãç¡äºã«ä»€åããµããŒãããŠããŸãð¥
"å¹³æ31幎5æ1æ¥" ãšè¡šç€ºãããæ¹ã¯ãã©ãŠã¶ãã¢ããããŒããããïŒãããã¯åºããŸã§åŸ ã€ïŒãåŸ ãŠã©ãåŸ ãŠã©ã衚瀺ãããªããã©ãŠã¶ã¯ãã°ãæåºããŸãããã
(泚ã什åã«ã¯ãã£ãŠãã Chrome äžã§ã®ãã®åæŠã®è¡šèšãã什ån幎nænæ¥ãããã什ån/n/nnãã®ããã«å€æŽã«ãªã£ãããã§ãããã€å€æŽã«ãªã£ãã®ãã¯ç§ã¯ããããŸããããã¶ãå 幎ã®éäžããã ãšæããŸãã)
ãã£ããã§ãã®ã§ã¿ã€ã®ããŒã±ã«ã§ã詊ããŠã¿ãŸãããã
new Intl.DateTimeFormat('th-TH-u-nu-thai', {era:'long'}).format(Date.now())
// "๠๠àžàžžàžàžàžšàž±àžàž£àž²àž à¹à¹à¹à¹"
ãªããèªããªããã©ã€ã€ïŒð€©
ã¿ã€ã¯ãé迊æ§ãå
¥æ»
ããç¿å¹Žã仿»
çŽå
å
幎ãšããŠããä»å¹Žã¯ 2562 幎ã®ããã§ãã
ãšããããã§ããã£ãšè©³ããç¥ãããæ¹ã¯ MDN Web Docs ãã©ããã
ã¡ãªã¿ã«ãIs it Reiwa (什å) yet? ãšãããããŒããã¹ããµã€ããäœã£ãŠã¿ãŸããã
https://reiwa-yet.glitch.me/.
ããã§ã¯ãä»å å·ãšãããããããããããŸãã
å
èšäºã¯ã4æ1æ¥ã«å
å·ãçºè¡šãããçŽåŸã«è±èªã§æžãããã®ã§ããä»åã什åå
幎ã®ã¯ããŸããèšå¿µããŠæ¥æ¬èªã§ãæžããŸããã
https://girliemac.com/blog/2019/04/02/javascript-i18n-reiwa-era/