JavaScriptã®Temporal APIã«ããã«ã¬ã³ããŒå€æã培åºè§£èª¬ãã€ã¹ã©ã æŠãããã©ã€æŠã仿Šãªã©å€æ§ãªæŠäœç³»éã§æ£ç¢ºãªæ¥ä»ãããã³ã°ãå¯èœã«ããæ¹æ³ãåŠã³ãŸãã
JavaScript Temporal ã«ã¬ã³ããŒå€æïŒç°ãªãæŠéã®æ¥ä»ãããã³ã°ããã¹ã¿ãŒãã
äžçã¯ã°ã¬ãŽãªãªæŠã ãã§åããŠããããã§ã¯ãããŸãããã°ããŒãã«ã«äºæ¥ãå±éããäŒæ¥ã¯ãããããç¹å®ã®æŠäœç³»ã«çµã³ã€ãã倿§ãªæåçã»å®æçæ £ç¿ãèæ ®ã«å ¥ããå¿ èŠããããŸããJavaScriptã®ã¢ãã³ãªTemporal APIã¯ããããã®è€éããæ±ãããã®åŒ·åãªããŒã«ãæäŸããéçºè ãã«ã¬ã³ããŒéã§æ¥ä»ãã·ãŒã ã¬ã¹ã«ãããã³ã°ããæ£ç¢ºãªã¹ã±ãžã¥ãŒãªã³ã°ãèšç®ãããŒã¿è¡šç€ºãä¿èšŒã§ããããã«ããŸãããã®å æ¬çãªã¬ã€ãã§ã¯ãTemporal APIã®ã«ã¬ã³ããŒå€ææ©èœãæ¢æ±ããã°ããŒãã«ã«å¯Ÿå¿ããã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã®å®è·µçãªäŸãšãã¹ããã©ã¯ãã£ã¹ãæäŸããŸãã
ç°ãªãæŠéã®æ¥ä»ãããã³ã°ã®å¿ èŠæ§ãçè§£ãã
åŸæ¥ã®JavaScriptã®`Date`ãªããžã§ã¯ãã¯ãã°ã¬ãŽãªãªæŠä»¥å€ã®ã«ã¬ã³ããŒãæ±ãéã«å¶éããããŸãããTemporal APIã¯ãæ§ã ãªæŠäœç³»ãæ±ãããã®æšæºåãããå ç¢ãªæ¹æ³ãæäŸããããšã§ããã®åé¡ã«å¯ŸåŠããŸãã以äžã®ã·ããªãªãèããŠã¿ãŸãããïŒ
- åœéäŒè°ã®ã¹ã±ãžã¥ãŒãªã³ã°ïŒ ã°ã¬ãŽãªãªæŠã§ã¹ã±ãžã¥ãŒã«ãããã€ãã³ãã«å¯Ÿå¿ããã€ã¹ã©ã æŠïŒããžã¥ã©æŠïŒãããã©ã€æŠã®æ¥ä»ãæ£ç¢ºã«ç¹å®ããããšã¯ã宿çãªç¥æ¥ãæåçãªé æ ®ãå°éããäžã§äžå¯æ¬ ã§ãã
- ç°ãªãå°åã§ã®ããŒã³å©æ¯ã®èšç®ïŒ äžéšã®éèæ©é¢ã§ã¯ã婿¯èšç®ã«ç¹å®ã®ã«ã¬ã³ããŒã䜿çšããŸããTemporalã¯ããããã®äœç³»ã§æ£ç¢ºãªæ¥ä»èšç®ãå¯èœã«ããŸãã
- ãŠãŒã¶ãŒã奜ã圢åŒã§ã®æ¥ä»è¡šç€ºïŒ ãŠãŒã¶ãŒã®ãã±ãŒã«ãã«ã¬ã³ããŒã®å¥œã¿ã«åãããŠæ¥ä»è¡šç€ºã調æŽããããšã¯ãç¹ã«å€æ§ãªäººã ã察象ãšããã¢ããªã±ãŒã·ã§ã³ã«ãããŠããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããŸãã
- éå»ã®ããŒã¿åæïŒ éå»ã®ããŒã¿ã»ãããæ±ãéãå€ããŸãã¯ããŸãäžè¬çã§ãªãã«ã¬ã³ããŒã§èšé²ãããæ¥ä»ãçè§£ã倿ããããšã¯ãæ£ç¢ºãªè§£éã®ããã«äžå¯æ¬ ã«ãªããŸãã
Temporal APIãšã«ã¬ã³ããŒã®ç޹ä»
Temporal APIã¯ãçŸä»£ã®JavaScriptç°å¢ã§åºããµããŒããããããã«ãªããæ¥ä»ãæå»ãã¿ã€ã ãŸãŒã³ãæ±ãããã®ããçŽæçã§åŒ·åãªæ¹æ³ãæäŸããŸãããã®äžå¿ã«ããã®ããç¹å®ã®æŠäœç³»ã衚ã`Temporal.Calendar`ãªããžã§ã¯ãã§ããTemporal.PlainDateãTemporal.PlainDateTimeãããã³ãã®ä»ã®Temporalåã¯ã`Temporal.Calendar`ã€ã³ã¹ã¿ã³ã¹ã«é¢é£ä»ããããšãã§ããŸãã
Temporal APIã¯ãçŸåšïŒãã®èšäºã®å·çæç¹ã§ã¯ïŒä»¥äžã®ã«ã¬ã³ããŒããµããŒãããŠããŸãïŒ
- `iso8601` (ã°ã¬ãŽãªãªæŠ - ããã©ã«ã)
- `gregory` (`iso8601`ã®ãšã€ãªã¢ã¹)
- `islamic`
- `islamic-umalqura`
- `islamic-tbla`
- `islamic-rgsa`
- `islamic-civil`
- `hebrew`
- `buddhist`
- `roc` (äžè¯æ°åœæŠ)
- `japanese` (åæŠ)
- `persian`
å°æ¥ã®ããŒãžã§ã³ã§ã¯ãããã«å€ãã®ã«ã¬ã³ããŒãå°å ¥ãããããã«ã¹ã¿ã ã«ã¬ã³ããŒã®å®è£ ãå¯èœã«ãªã£ãããããããããŸããã
Temporal.PlainDateã«ããåºæ¬çãªã«ã¬ã³ããŒå€æ
`Temporal.PlainDate`ãªããžã§ã¯ãã¯ãã¿ã€ã ãŸãŒã³ã®ãªãæ¥ä»ã衚ããŸããç¹å®ã®ã«ã¬ã³ããŒã«é¢é£ä»ãããã`Temporal.PlainDate`ãäœæããããšãã§ããŸãïŒ
const gregorianDate = Temporal.PlainDate.from('2024-01-20');
const islamicCalendar = Temporal.Calendar.from('islamic');
const islamicDate = Temporal.PlainDate.from({ year: 1445, month: 6, day: 8, calendar: islamicCalendar });
console.log(gregorianDate.toString()); // åºå: 2024-01-20
console.log(islamicDate.toString()); // åºå: 1445-06-08[u-ca=islamic]
`toString()`ã¡ãœããã¯ãã«ã¬ã³ããŒæ³šé`[u-ca=islamic]`ä»ãã§æ¥ä»ãåºåããŸããããã¯ãæ¥ä»ãã€ã¹ã©ã æŠã«é¢é£ä»ããããŠããããšã瀺ããŸãã
ã«ã¬ã³ããŒéã®å€æ
ã«ã¬ã³ããŒéã倿ããéµã¯ãåã«ã¬ã³ããŒã«é¢é£ä»ãããã`Temporal.PlainDate`ãªããžã§ã¯ããäœæããããããã®æ§æèŠçŽ ãæœåºããããšã§ããããã§ã¯ãã°ã¬ãŽãªãªæŠã®æ¥ä»ãã€ã¹ã©ã æŠã®å¯Ÿå¿ããæ¥ä»ã«å€æããæ¹æ³ã瀺ããŸãïŒ
const gregorianDate = Temporal.PlainDate.from('2024-01-20');
const islamicCalendar = Temporal.Calendar.from('islamic');
// ã€ã¹ã©ã æŠã®æ¥ä»æ§æèŠçŽ ãæœåº
const islamicYear = gregorianDate.toPlainDate(islamicCalendar).year;
const islamicMonth = gregorianDate.toPlainDate(islamicCalendar).month;
const islamicDay = gregorianDate.toPlainDate(islamicCalendar).day;
console.log(`Gregorian: ${gregorianDate.toString()}`);
console.log(`Islamic: ${islamicYear}-${islamicMonth}-${islamicDay}`); // åºå: Islamic: 1445-6-8
ãã®äŸãåè§£ããŠã¿ãŸãããïŒ
- ãŸãã`Temporal.PlainDate`ãªããžã§ã¯ããšããŠè¡šçŸããã`gregorianDate`ããå§ããŸãã
- `Temporal.Calendar.from('islamic')`ã䜿çšããŠ`islamicCalendar`ãªããžã§ã¯ããäœæããŸãã
- äžå¿ãšãªã倿ã¯`gregorianDate.toPlainDate(islamicCalendar)`ã§è¡ãããŸããããã«ãããåãæç¹ã衚ãããã€ã¹ã©ã æŠã«é¢é£ä»ããããæ°ãã`Temporal.PlainDate`ãªããžã§ã¯ããäœæãããŸãã
- 倿ããã`Temporal.PlainDate`ãªããžã§ã¯ããã`year`ã`month`ã`day`ã®æ§æèŠçŽ ãæœåºããŸãã
ãã®ãã¿ãŒã³ãå¿çšããŠãTemporal APIã§ãµããŒããããŠããä»»æã®2ã€ã®ã«ã¬ã³ããŒéã§å€æããããšãã§ããŸãã
é«åºŠãªã«ã¬ã³ããŒã®åãæ±ãïŒã€ã¹ã©ã æŠ
ã€ã¹ã©ã æŠã«ã¯ããã€ãã®ããªãšãŒã·ã§ã³ããããŸããTemporal APIã¯ãããããµããŒãããŠããŸãïŒ
- `islamic`: äžè¬çãªã€ã¹ã©ã æŠïŒå®è£ ã¯ç°ãªãå ŽåããããŸãïŒã
- `islamic-umalqura`: ãµãŠãžã¢ã©ãã¢ã®ãŠã³ã ã»ã¢ã«ã¯ã©ãŒæŠã«åºã¥ãã
- `islamic-tbla`: 衚èšç®ã«åºã¥ãã
- `islamic-rgsa`: 宿ç·åçïŒãšãžããïŒã«åºã¥ãã
- `islamic-civil`: äž»ã«èšç®ã«äœ¿çšããããçŽç²ã«ç®è¡çãªã€ã¹ã©ã æŠã
ã€ã¹ã©ã æŠãæ±ãéã«ã¯ãã©ã®ããªãšãŒã·ã§ã³ããŠãŒã¹ã±ãŒã¹ã«é©ããŠããããçè§£ããããšãéèŠã§ããäŸãã°ããµãŠãžã¢ã©ãã¢ã§ã®å®æçè¡äºã«ã¯`islamic-umalqura`ã䜿çšããã®ãé©åã§ããããéèèšç®ã«ã¯ããã®äºæž¬å¯èœæ§ãã`islamic-civil`ãããé©ããŠãããããããŸããã
const gregorianDate = Temporal.PlainDate.from('2024-03-11');
const islamicUmalquraCalendar = Temporal.Calendar.from('islamic-umalqura');
const islamicCivilCalendar = Temporal.Calendar.from('islamic-civil');
const islamicUmalquraDate = gregorianDate.toPlainDate(islamicUmalquraCalendar);
const islamicCivilDate = gregorianDate.toPlainDate(islamicCivilCalendar);
console.log(`Gregorian: ${gregorianDate.toString()}`);
console.log(`Islamic (Umm al-Qura): ${islamicUmalquraDate.year}-${islamicUmalquraDate.month}-${islamicUmalquraDate.day}`);
console.log(`Islamic (Civil): ${islamicCivilDate.year}-${islamicCivilDate.month}-${islamicCivilDate.day}`);
ã€ã¹ã©ã æŠã«é¢ããéèŠãªèæ ®äºé ïŒ
- ã€ã¹ã©ã æŠã®æ°ããæã®å§ãŸãã¯ãæ°æã®èŠ³æž¬ã«åºã¥ããŠããŸãã`islamic-umalqura`æŠã¯ãµãŠãžã¢ã©ãã¢ã§ã®å®éã®æã®èŠ³æž¬ã«åãããããšãç®æããŠããŸãããããã§ãé£ãéããçããããšããããŸãã
- `islamic-civil`æŠã¯æ°åŠçãªè¿äŒŒã§ãããå®éã®æã®èŠ³æž¬ãåæ ããŠããŸããã
- ã€ã¹ã©ã æã®ç¥æ¥ã®æ£ç¢ºãªæ¥ä»ã«ã€ããŠã¯ãåžžã«é¢é£ãã宿åœå±ãä¿¡é Œã§ããæ å ±æºã«ç¢ºèªããŠãã ããã
ããã©ã€æŠã®åãæ±ã
ããã©ã€æŠã¯ããŠãã€æã®å®æçè¡äºãã€ã¹ã©ãšã«ã®å ¬åŒã«ã¬ã³ããŒãšããŠäœ¿çšããã倪é°å€ªéœæŠã§ããå£ç¯ãšã®ããã調æŽããããã«éæãå«ãŸããŠããŸãã
const gregorianDate = Temporal.PlainDate.from('2024-03-11');
const hebrewCalendar = Temporal.Calendar.from('hebrew');
const hebrewDate = gregorianDate.toPlainDate(hebrewCalendar);
console.log(`Gregorian: ${gregorianDate.toString()}`);
console.log(`Hebrew: ${hebrewDate.year}-${hebrewDate.month}-${hebrewDate.day}`);
ããã©ã€æŠãšTemporalã®äž»ãªç¹åŸŽïŒ
- éæã¯Temporal APIã«ãã£ãŠèªåçã«åŠçãããŸããéå¹Žãæ±ºå®ããããäœåãªæã远å ãããããããã®ã«ã¹ã¿ã ããžãã¯ãå®è£ ããå¿ èŠã¯ãããŸããã
- 幎ã®çªå·ä»ãã¯ãäŒçµ±çãªãŠãã€ã®çŽå ïŒå€©å°åµé ïŒããå§ãŸããŸãã
- ããã©ã€æŠã®æã®ååã¯ã°ã¬ãŽãªãªæŠãšã¯ç°ãªããŸãããããã®æã®ååã¯ãåœéåïŒi18nïŒã©ã€ãã©ãªãã«ã¹ã¿ã ãããã³ã°ãéããŠã¢ã¯ã»ã¹ã§ããŸãã
仿Šãäžè¯æ°åœæŠãåæŠããã«ã·ã£æŠã®åãæ±ã
Temporal APIã¯ãããããã«ç¬èªã®ç¹åŸŽãæã€ä»ã®ã«ã¬ã³ããŒããµããŒãããŠããŸãã以äžã«ããã€ãã®èæ ®äºé ãæããŸãïŒ
- 仿ŠïŒ 仿Šã¯å€ãã®æ±åã¢ãžã¢è«žåœã§äœ¿çšããã倪é°å€ªéœæŠã§ãã幎ã®çªå·ä»ãã¯éåžžãé迊ã®å ¥æ» ããå§ãŸããŸãã
- äžè¯æ°åœæŠïŒROC CalendarïŒïŒ ãã®ã«ã¬ã³ããŒã¯å°æ¹Ÿã§äœ¿çšããã1912幎ã®äžè¯æ°åœå»ºåœããå¹Žãæ°ããŸãã
- åæŠïŒJapanese CalendarïŒïŒ åæŠã¯ã°ã¬ãŽãªãªæŠã«åºã¥ããŠããŸããã幎ã衚ãããã«æ¥æ¬ã®å å·ïŒå¹Žå·ïŒã䜿çšããŸãã
- ãã«ã·ã£æŠïŒ ãã«ã·ã£æŠã¯ãäž»ã«ã€ã©ã³ãšã¢ãã¬ãã¹ã¿ã³ã§äœ¿çšãããå€ªéœæŠã§ãã
const gregorianDate = Temporal.PlainDate.from('2024-03-11');
const buddhistCalendar = Temporal.Calendar.from('buddhist');
const rocCalendar = Temporal.Calendar.from('roc');
const japaneseCalendar = Temporal.Calendar.from('japanese');
const persianCalendar = Temporal.Calendar.from('persian');
const buddhistDate = gregorianDate.toPlainDate(buddhistCalendar);
const rocDate = gregorianDate.toPlainDate(rocCalendar);
const japaneseDate = gregorianDate.toPlainDate(japaneseCalendar);
const persianDate = gregorianDate.toPlainDate(persianCalendar);
console.log(`Gregorian: ${gregorianDate.toString()}`);
console.log(`Buddhist: ${buddhistDate.year}-${buddhistDate.month}-${buddhistDate.day}`);
console.log(`ROC: ${rocDate.year}-${rocDate.month}-${rocDate.day}`);
console.log(`Japanese: ${japaneseDate.year}-${japaneseDate.month}-${japaneseDate.day}`);
console.log(`Persian: ${persianDate.year}-${persianDate.month}-${persianDate.day}`);
ãããã®ã«ã¬ã³ããŒã䜿çšããéã«ã¯ãããããã®çŽå ïŒéå§å¹ŽïŒãæ¥ä»è¡šçŸã«é¢é£ããæåçãªãã¥ã¢ã³ã¹ã«æ³šæããŠãã ããã
Temporal.Nowãšã«ã¬ã³ããŒã«é¢ããèæ ®äºé
`Temporal.Now`ã¯çŸåšã®æ¥ä»ãšæå»ãååŸããããã«äœ¿çšã§ããŸãããããã©ã«ãã§ã¯ISO 8601ã«ã¬ã³ããŒã§çŸåšã®æ¥ä»ãšæå»ãè¿ãããšãçè§£ããããšãéèŠã§ããããç°ãªãã«ã¬ã³ããŒã§çŸåšã®æ¥ä»ãå¿ èŠãªå Žåã¯ã倿ããå¿ èŠããããŸãïŒ
const islamicCalendar = Temporal.Calendar.from('islamic');
const now = Temporal.Now.plainDateISO(); // ISO 8601ã«ã¬ã³ããŒã§ã®çŸåšã®æ¥ä»
const islamicNow = now.toPlainDate(islamicCalendar);
console.log(`Current Gregorian Date: ${now.toString()}`);
console.log(`Current Islamic Date: ${islamicNow.year}-${islamicNow.month}-${islamicNow.day}`);
æ¥ä»ã®ãã©ãŒããããšåœéåïŒi18nïŒ
æ¥ä»ã®å€æã¯æ¹çšåŒã®äžéšã«ãããŸããã衚瀺ã®ããã«æ£ãããã©ãŒãããããå¿ èŠããããŸããJavaScriptã®`Intl.DateTimeFormat` APIã¯ã匷åãªåœéåæ©èœãæäŸããŸãããããTemporal APIãšçµã¿åãããŠäœ¿çšããããšã§ãé¢é£ããã«ã¬ã³ããŒãèæ ®ã«å ¥ãããã±ãŒã«ã«å¯Ÿå¿ããæ¹æ³ã§æ¥ä»ããã©ãŒãããã§ããŸãã
const gregorianDate = Temporal.PlainDate.from('2024-01-20');
const islamicCalendar = Temporal.Calendar.from('islamic');
const islamicDate = gregorianDate.toPlainDate(islamicCalendar);
const formatter = new Intl.DateTimeFormat('ar-SA-u-ca-islamic', { // ã€ã¹ã©ã æŠã䜿çšããã¢ã©ãã¢èªïŒãµãŠãžã¢ã©ãã¢ïŒ
year: 'numeric',
month: 'long',
day: 'numeric',
});
console.log(formatter.format(islamicDate)); // åºåäŸ: Ù¢Ù Ø±Ø¬ØšØ Ù¡Ù€Ù€Ù¥ ÙÙ
ãã®ã³ãŒããåæããŠã¿ãŸãããïŒ
- `'ar-SA-u-ca-islamic'`ã¯ãã±ãŒã«æååã§ãã`ar-SA`ã¯ã¢ã©ãã¢èªïŒãµãŠãžã¢ã©ãã¢ïŒãæå®ãã`u-ca-islamic`ã¯æç€ºçã«ã€ã¹ã©ã æŠãèŠæ±ããŸãã
- `Intl.DateTimeFormat`ã®ãªãã·ã§ã³ã¯ãæ¥ä»ã®ãã©ãŒãããæ¹æ³ïŒå¹Žãæãæ¥ïŒãå¶åŸ¡ããŸãã
- `format()`ã¡ãœããã¯`Temporal.PlainDate`ãªããžã§ã¯ãïŒãã®å Žåã¯`islamicDate`ïŒãåãåããæå®ããããã±ãŒã«ãšã«ã¬ã³ããŒã«åŸã£ãŠãã©ãŒããããããæååãè¿ããŸãã
ç¹å®ã®ããŒãºã«åãããŠãã±ãŒã«æååãšãã©ãŒããããªãã·ã§ã³ã調æŽã§ããŸããäŸãã°ãããã©ã€èªã§æ¥ä»ããã©ãŒãããããã«ã¯ïŒ
const gregorianDate = Temporal.PlainDate.from('2024-03-11');
const hebrewCalendar = Temporal.Calendar.from('hebrew');
const hebrewDate = gregorianDate.toPlainDate(hebrewCalendar);
const formatter = new Intl.DateTimeFormat('he-IL-u-ca-hebrew', { // ããã©ã€æŠã䜿çšããããã©ã€èªïŒã€ã¹ã©ãšã«ïŒ
year: 'numeric',
month: 'long',
day: 'numeric',
});
console.log(formatter.format(hebrewDate));
广çãªæ¥ä»ãã©ãŒãããã®ãã³ãïŒ
- ãŠãŒã¶ãŒã奜ãèšèªãšå°åãæ£ç¢ºã«åæ ãããã±ãŒã«æååã䜿çšããŸãã
- ã³ã³ããã¹ãã«é©ãããã©ãŒããããªãã·ã§ã³ãéžæããŸãïŒäŸïŒã³ã³ãã¯ããªè¡šç€ºã«ã¯çãæ¥ä»åœ¢åŒã詳现ãªè¡šç€ºã«ã¯é·ãæ¥ä»åœ¢åŒïŒã
- ç°ãªããã±ãŒã«ã§ãã©ãŒãããããã¹ãããæ£ç¢ºããšèªã¿ãããã確èªããŸãã
ã«ã¬ã³ããŒéã§ã®æ¥ä»èšç®ã®å®è¡
Temporal APIã¯æ¥ä»èšç®ã«åªããŠããŸããã°ã¬ãŽãªãªæŠä»¥å€ã®ã«ã¬ã³ããŒãæ±ã£ãŠããå Žåã§ãã`Temporal.PlainDate`ãªããžã§ã¯ãã«å¯ŸããŠæ¥ãæã幎ãå ç®ãŸãã¯æžç®ã§ããŸãã
const gregorianDate = Temporal.PlainDate.from('2024-01-20');
const islamicCalendar = Temporal.Calendar.from('islamic');
const islamicDate = gregorianDate.toPlainDate(islamicCalendar);
// ã€ã¹ã©ã æŠã®æ¥ä»ã«30æ¥ãå ç®
const futureIslamicDate = islamicDate.add({ days: 30 });
console.log(`Original Islamic Date: ${islamicDate.year}-${islamicDate.month}-${islamicDate.day}`);
console.log(`Islamic Date + 30 days: ${futureIslamicDate.year}-${futureIslamicDate.month}-${futureIslamicDate.day}`);
// æªæ¥ã®ã€ã¹ã©ã æŠã®æ¥ä»ãã°ã¬ãŽãªãªæŠã«æ»ã
const futureGregorianDate = futureIslamicDate.toPlainDate('iso8601');
console.log(`Equivalent Gregorian Date: ${futureGregorianDate.toString()}`);
æ¥ä»èšç®ã«é¢ããäž»ãªèæ ®äºé ïŒ
- `add()`ããã³`subtract()`ã¡ãœããã¯æ°ãã`Temporal.PlainDate`ãªããžã§ã¯ããè¿ããŸããå ã®ãªããžã§ã¯ãã¯å€æŽããŸããã
- æã幎ãå ç®ãŸãã¯æžç®ããå ŽåãTemporal APIã¯é幎ãæã®æ¥æ°ã«é¢ããã«ã¬ã³ããŒåºæã®ã«ãŒã«ãåŠçããŸãã
- èšç®ãå®è¡ããéã«ã¯ãæ¥ä»ã®ãªãŒããŒãããŒãã¢ã³ããŒãããŒã®å¯èœæ§ã«æ³šæããŠãã ãããTemporal APIã¯éåžžãã«ã¬ã³ããŒå ã®æãè¿ãæå¹ãªæ¥ä»ã«èª¿æŽããŸãã
ææ§ãªæ¥ä»ã®åãæ±ã
å Žåã«ãã£ãŠã¯ãã«ã¬ã³ããŒéã§å€æããéã«æ¥ä»ãææ§ã«ãªãããšããããŸããããã¯ãç¹å®ã®æ¥ä»ãã¿ãŒã²ããã«ã¬ã³ããŒã«ååšããªãå Žåããã¿ãŒã²ããã«ã¬ã³ããŒã®è€æ°ã®æ¥ä»ããœãŒã¹ã®æ¥ä»ã«å¯Ÿå¿ããå¯èœæ§ãããå Žåã«çºçããŸããTemporalã¯ãããã®ç¶æ³ãé©åã«åŠçããéåžžã¯æãè¿ãæå¹ãªæ¥ä»ãè¿ããŸãã
äŸãã°ãã°ã¬ãŽãªãªæŠã®æã®çµããè¿ãã®æ¥ä»ãã€ã¹ã©ã æŠã«å€æããå Žåã察å¿ããã€ã¹ã©ã æŠã®æãçãããšããããŸããTemporalã¯çµæãšããŠåŸãããã€ã¹ã©ã æŠã®æ¥ä»ããã®æã®æçµæ¥ã«èªåçã«èª¿æŽããŸãã
ãšã©ãŒãã³ããªã³ã°ãšããªããŒã·ã§ã³
Temporal APIã¯å ç¢ã§ãããäºæããªãåäœãé²ãããã«é©åãªãšã©ãŒãã³ããªã³ã°ãšããªããŒã·ã§ã³ãå®è£ ããããšãäžå¯æ¬ ã§ãã以äžã¯èæ ®ãã¹ãäžè¬çãªã·ããªãªã§ãïŒ
- ç¡å¹ãªã«ã¬ã³ããŒåïŒ `Temporal.Calendar.from()`ã«ç¡å¹ãªã«ã¬ã³ããŒåãæž¡ããšã`RangeError`ãã¹ããŒãããŸãããã®ãšã©ãŒããã£ãããããŠãŒã¶ãŒãã¬ã³ããªãŒãªã¡ãã»ãŒãžãæäŸããŠãã ããã
- ç¡å¹ãªæ¥ä»åœ¢åŒïŒ ç¡å¹ãªæ¥ä»æååãã`Temporal.PlainDate`ãäœæããããšãããšã`RangeError`ãã¹ããŒãããŸããæ¥ä»æååã`Temporal.PlainDate.from()`ã«æž¡ãåã«æ€èšŒããŠãã ããã
- ãµããŒããããŠããªãæäœïŒ äžéšã®ã«ã¬ã³ããŒåºæã®æäœã¯Temporal APIã§ãµããŒããããŠããªãå ŽåããããŸãã䜿çšããŠããç¹å®ã®ã«ã¬ã³ããŒã®ããã¥ã¡ã³ãã確èªããŠãã ããã
ç°ãªãæŠéã®æ¥ä»ãããã³ã°ã«ããããã¹ããã©ã¯ãã£ã¹
ç°ãªãæŠéã®æ¥ä»ãããã³ã°ãæ±ãéã«æ£ç¢ºæ§ãšä¿å®æ§ã確ä¿ããããã«ã以äžã®ãã¹ããã©ã¯ãã£ã¹ã«åŸã£ãŠãã ããïŒ
- Temporal APIã䜿çšããïŒ Temporal APIã¯ãã«ã¬ã³ããŒå€æãåŠçããããã®æšæºåãããå ç¢ãªæ¹æ³ãæäŸããŸãããã®ç®çã®ããã«ã¬ã¬ã·ãŒãªJavaScriptã®`Date`ãªããžã§ã¯ãã䜿çšããããšã¯é¿ããŠãã ããã
- ã«ã¬ã³ããŒãæç€ºçã«æå®ããïŒ `Temporal.PlainDate`ãªããžã§ã¯ããäœæããéã«ã¯ãåžžã«ã«ã¬ã³ããŒãæç€ºçã«æå®ããŠãã ãããããã«ããææ§ãããªããªããæ£ããæŠã®ã«ãŒã«ãé©çšãããããšãä¿èšŒãããŸãã
- é©åãªã€ã¹ã©ã æŠã®ããªãšãŒã·ã§ã³ãéžæããïŒ æ§ã ãªã€ã¹ã©ã æŠã®å®è£ ã®éããçè§£ãããŠãŒã¹ã±ãŒã¹ã«æãé©ãããã®ãéžæããŠãã ããã
- åœéåïŒi18nïŒã䜿çšããïŒ `Intl.DateTimeFormat` APIãæŽ»çšããŠããã±ãŒã«ã«å¯Ÿå¿ããæ¹æ³ã§æ¥ä»ããã©ãŒãããããŠãã ããã
- ãšã©ãŒãã³ããªã³ã°ãå®è£ ããïŒ ç¡å¹ãªã«ã¬ã³ããŒåãæ¥ä»åœ¢åŒããã®ä»ã®æœåšçãªåé¡ããã£ããããããã«å ç¢ãªãšã©ãŒãã³ããªã³ã°ãå®è£ ããŠãã ããã
- 培åºçã«ãã¹ãããïŒ æ§ã ãªæ¥ä»ãšãã±ãŒã«ã§ã³ãŒãããã¹ãããæ£ç¢ºæ§ãšäºææ§ã確èªããŠãã ããã
- ææ°ã®ç¶æ ãä¿ã€ïŒ Temporal APIã¯ãŸã é²åããŠããŸããææ°ã®ä»æ§ãšãã©ãŠã¶ã®å®è£ ã«ã€ããŠææ°æ å ±ãå ¥æããŠãã ããã
çµè«
JavaScriptã®Temporal APIã¯ãç§ãã¡ãæ¥ä»ãšã«ã¬ã³ããŒãæ±ãæ¹æ³ã«é©åœããããããç°ãªãæŠéã®æ¥ä»ãããã³ã°ãå®è¡ããããã®åŒ·åã§æšæºåãããæ¹æ³ãæäŸããŸããç°ãªãæŠäœç³»ã®ãã¥ã¢ã³ã¹ãçè§£ããTemporal APIã广çã«æŽ»çšããããšã§ãéçºè ã¯å€æ§ãªæåçã»å®æçããŒãºã«å¿ããã°ããŒãã«å¯Ÿå¿ã®ã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããŸãããããžã§ã¯ãã§ããå æ¬çã§æ£ç¢ºãªæ¥ä»åŠçãœãªã¥ãŒã·ã§ã³ãäœæããããã«ãTemporal APIããã²æŽ»çšããŠãã ããã
ãã®ã¬ã€ãã§ã¯ãJavaScript Temporal APIã«ããã«ã¬ã³ããŒå€æã®å æ¬çãªæŠèŠã説æããŸãããææ°æ å ±ãšè©³çްãªä»æ§ã«ã€ããŠã¯ãå ¬åŒã®Temporal APIããã¥ã¡ã³ããåç §ããŠãã ããã