Temporal.Duration
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Temporal.Duration ãªãã¸ã§ã¯ãã¯ã2 ã¤ã®æç¹éã®å·®ã表ããã®ã§ãæ¥ä»ã»æå»ã®æ¼ç®ã«ä½¿ç¨ã§ãã¾ããããã¯åºæ¬çã«ãå¹´ãæãé±ãæ¥ãæéãåãç§ãããªç§ããã¤ã¯ãç§ãããç§ã®å¤ã®çµã¿åããã¨ãã¦è¡¨ç¾ããã¾ãã
解説
>ISO 8601 æéå½¢å¼
Duration ãªãã¸ã§ã¯ãã¯ãISO 8601 æéå½¢å¼ï¼ECMAScript ã§è¦å®ãããããã¤ãã®æ¡å¼µæ©è½ãå«ãï¼ã使ç¨ãã¦ã·ãªã¢ã©ã¤ãºããã³æ§æè§£æãããã¨ãã§ãã¾ããæååã¯æ¬¡ã®å½¢å¼ãã¨ãã¾ãï¼ç©ºç½ã¯å¯èªæ§ã®ããã®ãã®ã§ãããå®éã®æååã«ã¯å«ããªãã§ãã ããï¼ã
±P nY nM nW nD T nH nM nS
±çç¥å¯-
ãªãã·ã§ã³ã®ç¬¦å·æåï¼
+ã¾ãã¯-ï¼ã§ãæ£ã¾ãã¯è² ã®æéã表ãã¾ããããã©ã«ãã¯æ£ã®æéã§ãã P-
ãªãã©ã«æå
Pã¾ãã¯pã§ããæéã(period) ã表ãã¾ãã nY,nM,nW,nD,nH,nM,nS-
æ°å¤ã®å¾ã«ãªãã©ã«æåãç¶ãå½¢å¼ã§ãããããå¹´ (
Y)ãæ (M)ãé± (W)ãæ¥ (D)ãæé (H)ãå (M)ãç§ (S) ã表ãã¾ããæå¾ã®è¦ç´ ãé¤ããã¹ã¦ã®è¦ç´ ã¯æ´æ°ã§ãªããã°ãªãã¾ãããæå¾ã®æåãæéè¦ç´ ï¼æéãåãç§ï¼ã§ããå ´åãå°æ°ç¹ï¼ãããã¾ãã¯ã«ã³ãï¼ã§å§ã¾ã 1 æ¡ãã 9 æ¡ã®å°æ°é¨åãæã¤ãã¨ãå¯è½ã§ããä¾ãã°PT0.0021SãPT1.1Hãªã©ã§ããã¼ãã®è¦ç´ ã¯çç¥å¯è½ã§ãããå°ãªãã¨ã 1 ã¤ã®è¦ç´ ã¯åå¨ããå¿ è¦ãããã¾ãï¼å¤ãã¼ãã§ãã£ã¦ãåæ§ã§ãããã®å ´åãæéã¯ã¼ãã¨ãªãã¾ãï¼ã T-
æ¥ä»é¨åã¨æå»é¨åãåºåããªãã©ã«æå
Tã¾ãã¯tã§ãããã®æåã¯ããã®å¾ã«å°ãªãã¨ã 1 ã¤ã®è¦ç´ ãããå ´åã«ã®ã¿åå¨ããå¿ è¦ãããã¾ãã
ãã¡ãã¯ããã¤ãã®ä¾ã§ãã
| ISO 8601 | æå³ |
|---|---|
P1Y1M1DT1H1M1.1S |
1 å¹´ 1 ã¶æ 1 æ¥ 1 æé 1 å 1 ç§ 100 ããªç§é |
P40D |
40 æ¥é |
P1Y1D |
1 年㨠1 æ¥é |
P3DT4H59M |
3 æ¥ã¨ 4 æé 59 å |
PT2H30M |
2 æé 30 å |
P1M |
1 ã¶æ |
PT1M |
1 åé |
PT0.0021S |
2.1 ããªç§é (2 ããªç§ã¨ 100 ãã¤ã¯ãç§) |
PT0S |
ã¼ãï¼æ¨æºçãªè¡¨è¨ï¼ |
P0D |
ã¼ã |
ã¡ã¢:
ISO 8601-1 æ¨æºã«ããã¨ãé±åä½ã¯ä»ã®åä½ã¨çµã¿åããã¦ä½¿ç¨ãããã¨ã¯ã§ãããæéã表ãå¤ã¯æ£ã®å¤ã«éããã¾ãããã®æ¨æºã®æ¡å¼µã§ãã ISO 8601-2ï¼Temporal ãæ¡ç¨ãã¦ããæ¨æºï¼ã§ã¯ãæååã®å
é ã«ç¬¦å·æåãä»ãããã¨ããé±åä½ãä»ã®åä½ã¨çµã¿åããããã¨ãã§ããããã«ãªã£ã¦ãã¾ãããããã£ã¦ãæéã P3W1Dã+P1Mãã¾ã㯠-P1M ã®ãããªæååã«å¤æãããå ´åãä»ã®ããã°ã©ã ã§ã¯åãå
¥ããããªããã¨ããããã¨ã«ã注æãã ããã
ã·ãªã¢ã©ã¤ãºãè¡ãéãåºåã¯æ ¼ç´ãããæåãå¯è½ãªéãå°éããä¸åè¡¡ãªæåãä¿æãã¾ãããã ãã1 ç§æªæºã®æåã¯åä¸ã®å°æ°ç¹ä»¥ä¸ã®æ¡æ°ãæã¤ç§ã¨ãã¦ã·ãªã¢ã©ã¤ãºããããããä¸åè¡¡ãªå ´åããã®æ£ç¢ºãªå¤ã失ããããã¨ãããã¾ããæ£ã®å¤ã«ã¤ãã¦ã¯ããã©ã¹è¨å·ã¯é¤å¤ããã¾ããæç¶æéã0ã®å ´åã¯ã常㫠PT0S ã¨ãã¦ã·ãªã¢ã©ã¤ãºããã¾ãã
æ¦æé
æ¦æé (calendar duration) ã¨ã¯ãæ¦ã®åä½ï¼é±ãæãå¹´ï¼ã®ãããããå«ã¾ãã¦ããæéã®ãã¨ã§ããæ¦ä»¥å¤ã®æéã¯ç§»æ¤æ§ããããæ¦æ å ±ãå¿ è¦ã¨ããã«æ¥ä»ã»æéã®æ¼ç®ã«å©ç¨ã§ãã¾ããããã¯ãããããåºå®ãããæéãæç¢ºã«è¡¨ãã¦ããããã§ãã䏿¹ãæ¦æéã¯ç§»æ¤æ§ãããã¾ããã1 ã¶æã 1 å¹´ã®æ¥æ°ã¯ãæ¦ä½ç³»ãåºæºæç¹ã«ãã£ã¦ç°ãªãããã§ãããããã£ã¦ãæ¦æéã«å¯¾ãã¦ç®è¡æ¼ç®ãè¡ããã¨ããã¨ãã¨ã©ã¼ãçºçãã¾ããæéèªä½ã¯æ¦æ å ±ãä¿æãã¦ããªãããã§ããä¾ãã°ãã°ã¬ã´ãªãªæ¦ã® 5 æã§ããã°ã1 ã¶æãã¯ã31 æ¥ãã§ããã4 æã§ããã°ã1 ã¶æãã¯ã30 æ¥ãã«ãªãã¾ããæ¦æéãå ç®ã¾ãã¯æ¸ç®ããã«ã¯ãæ¥ä»ã«å¯¾ãã¦è¡ãå¿ è¦ãããã¾ãã
const dur1 = Temporal.Duration.from({ years: 1 });
const dur2 = Temporal.Duration.from({ months: 1 });
dur1.add(dur2); // RangeError: for calendar duration arithmetic, use date arithmetic relative to a starting point
const startingPoint = Temporal.PlainDate.from("2021-01-01"); // ISO 8601 æ¦
startingPoint.add(dur1).add(dur2).since(startingPoint); // "P396D"
ãã以å¤ã®æ¼ç®ãround()ãtotal()ãcompare() ã§ã¯ãå¿
è¦ãªæ¦ããã³åºæºææ
å ±ãæä¾ããããã« relativeTo ãªãã·ã§ã³ãåãã¾ãããã®ãªãã·ã§ã³ã«ã¯ãTemporal.PlainDateãTemporal.PlainDateTimeãTemporal.ZonedDateTimeãTemporal.ZonedDateTime.from()ï¼timeZone ãªãã·ã§ã³ãæå®ãããããæååã«ã¿ã¤ã ã¾ã¼ã³æå®ãå«ã¾ãã¦ããå ´åï¼ã¾ã㯠Temporal.PlainDate.from() ã使ç¨ãã¦å¤æå¯è½ãªãªãã¸ã§ã¯ããæååãæå®ã§ãã¾ãã
ãªããdays ãã hours ã¸ã®æç®ãã夿éãªã©ã®ãªãã»ããã®å¤æ´ã«ãã 1 æ¥ã®é·ããå¤ãããã¨ããããããæè¡çã«ã¯ææ§ã§ããç¹ã«ã注æãã ããããããã夿´ãèæ
®ããã«ã¯ãã¿ã¤ã ã¾ã¼ã³ãæå®ãã relativeTo ãæä¾ããå¿
è¦ãããã¾ããæä¾ããªãå ´åã¯ã1 æ¥ã 24 æéã§ããã¨ä»®å®ããã¾ãã
æéã®ãã©ã³ã¹
åãæéãè¡¨ãæ¹æ³ã¯ããããããã¾ããä¾ãã°ãã1 å 30 ç§ãã¨ã90 ç§ãã¯åãæå³ã§ããããããç¶æ³ã«ãã£ã¦ãã©ã¡ãã®è¡¨ç¾ãããé©åã§ãããã¯ç°ãªãã¾ãããã®ãããä¸è¬çã« Duration ãªãã¸ã§ã¯ãã¯å
¥åå¤ãå¯è½ãªéãä¿æããæ¸å¼åããéã«æå¾
ã©ããã«è¡¨ç¤ºãããããã«ãã¦ãã¾ãã
æéã®åæåã«ã¯æé©ãªç¯å²ãããã¾ããæé㯠0 ãã 23ãå㯠0 ãã 59 ã¨ãã£ãå
·åã«ã§ããåæåãæé©ãªç¯å²ãè¶
ããå ´åããã®è¶
éåã¯ä¸ã¤ä¸ã®åä½ã«ãç¹°ãä¸ããããããã¨ãããã¾ããç¹°ãä¸ããè¡ãã«ã¯ããY ã«ã¯ X ãããã¤å«ã¾ããããã¨ããåãã«çããå¿
è¦ãããã¾ãããããã¯æ¦åä½ã«ã¨ã£ã¦ã¯è¤éãªåé¡ã§ããããããã®å ´åã¯æ¦ãä¸å¯æ¬ ã¨ãªãã¾ããã¾ããããã©ã«ãã§ days ã¯ç´æ¥ months ã«ç¹°ãä¸ãããã¾ãããweeks åä½ã¸ã®ç¹°ãä¸ãã¯æç¤ºçã«ãªã¯ã¨ã¹ããããå ´åã®ã¿è¡ãããç¹ã«ã注æãã¦ãã ãããå¯è½ãªéãç¹°ãä¸ããè¡ãã¨ãæçµçã«ãã¹ã¦ã®è¦ç´ ãæé©ãªç¯å²å
ã«åã¾ãç¶æ
ãããã©ã³ã¹ã®åãããæéã¨å¼ã³ã¾ãããã©ã³ã¹ã®åãã¦ããªãæéã¯é常ããé ã§ã£ãã¡ããªå½¢å¼ãã¨ãã¾ããããã¯ãæå¤§ã®åä½ãåã£ã¦ããç¶æ
ãæãã¾ãï¼ä¾ï¼ã27 æé 30 åãï¼ãã23 æé 270 åãã®ãããªä»ã®å½¢å¼ã¯ããã£ãã«è¦ããã¾ããã
round() ã¡ã½ããã¯ãlargestUnit ãªãã·ã§ã³ã§æå®ãããä¸éã¾ã§ãå¸¸ã«æéããé ã§ã£ãã¡ããªå½¢ã«èª¿æ´ãã¾ããlargestUnit ãªãã·ã§ã³ãååã«å¤§ããè¨å®ãããã¨ã§ãæéã®ãã©ã³ã¹ãå®å
¨ã«ã¨ããã¨ãå¯è½ã§ããåæ§ã«ãadd() ããã³ subtract() ã¡ã½ããã¯ãçµæã®æéããå
¥åãããæéã®ãã¡æã大ããåä½ã«åããã¦èª¿æ´ãã¾ãã
ISO 8601 ã®æéå½¢å¼ã§ã¯ã1 ç§æªæºã®æåãåä¸ã®å°æ°ç¹æ°ã§è¡¨ç¾ãããããããã©ã«ãã®æ¸å¼åã使ç¨ãã¦ã·ãªã¢ã©ã¤ãºããéããã©ã³ã¹ã®åãã¦ããªã1ç§æªæºã®æåãç¶æãããã¨ã¯ã§ãã¾ãããä¾ãã°ãã1000 ããªç§ã㯠"PT1S" ã¨ãã¦ã·ãªã¢ã©ã¤ãºããããã®å¾ã1 ç§ãã¨ãã¦ãã·ãªã¢ã©ã¤ãºããã¾ããç§æªæºã®è¦ç´ ã®çµ¶å¯¾å¤ãä¿æããå¿
è¦ãããå ´åã¯ã代ããã«æåã§ JSON ãªãã¸ã§ã¯ãã¨ãã¦ã·ãªã¢ã©ã¤ãºããå¿
è¦ãããã¾ãï¼ããã©ã«ãã§ãtoJSON() ã¡ã½ãããæéã ISO 8601 æ¸å¼ã§ã·ãªã¢ã©ã¤ãºããããã§ãï¼ã
æéã®ç¬¦å·
æéã¨ã¯ 2 ã¤ã®æç¹ã®å·®ã§ãããããæ£ãè² ãã¼ãã®ããããã«ãªãã¾ããä¾ãã°ãã¤ãã³ãã®æéãç¸å¯¾æéã¨ãã¦è¡¨ç¤ºããå ´åãè² ã®æéã¯éå»ã®ã¤ãã³ãã表ããæ£ã®æéã¯æªæ¥ã®ã¤ãã³ãã表ããã¨ãããã¾ããæéã³ã³ãã¼ãã³ããçµã¿åããã¦è¡¨ç¾ããå ´åã符å·ã¯ããããã®è¦ç´ å
ã«æ ¼ç´ããã¾ããã¤ã¾ããè² ã®æéã§ã¯ãã¹ã¦ã®è¦ç´ ãè² ï¼ã¾ãã¯ã¼ãï¼ã«ãªããæ£ã®æéã§ã¯ãã¹ã¦ã®è¦ç´ ãæ£ï¼ã¾ãã¯ã¼ãï¼ã«ãªãã¾ãã符å·ãæ··å¨ããè¦ç´ ã§æéãæ§ç¯ãããã¨ã¯ä¸æ£ã§ãããã³ã³ã¹ãã©ã¯ã¿ã¼ã with() ã¡ã½ããã§ã¯æå¦ããã¾ããadd() ããã³ subtract() ã¡ã½ããã§ã¯ã符å·ã®æ··å¨ãé¿ããããã«çµæã®æéã調æ´ãã¾ãã
ã³ã³ã¹ãã©ã¯ã¿ã¼
Temporal.Duration()-
åºç¤ã¨ãªããã¼ã¿ãç´æ¥æå®ãã¦ãæ°ãã
Temporal.Durationãªãã¸ã§ã¯ãã使ãã¾ãã
éçã¡ã½ãã
Temporal.Duration.compare()-
æåã®æé㨠2 ã¤ç®ã®æéãæ¯è¼ããåè ãå¾è ããçããåããã¾ãã¯é·ããã¨ãç¤ºãæ°å¤ï¼-1ã0ã1 ã®ããããï¼ãè¿ãã¾ãã
Temporal.Duration.from()-
å¥ã®
Temporal.Durationãªãã¸ã§ã¯ããæéããããã£ãæã¤ãªãã¸ã§ã¯ããã¾ã㯠ISO 8601 å½¢å¼ã®æååãããæ°ããTemporal.Durationãªãã¸ã§ã¯ãã使ãã¾ãã
ã¤ã³ã¹ã¿ã³ã¹ããããã£
ãããã®ããããã£ã¯ Temporal.Duration.prototype ã«å®ç¾©ããã¦ããããã¹ã¦ã® Temporal.Duration ã¤ã³ã¹ã¿ã³ã¹ã§å
±æããã¦ãã¾ãã
Temporal.Duration.prototype.blank-
ãã®åçæéãç¡æéã表ãå ´åã¯
trueããã以å¤ã®å ´åã¯falseã¨ãªãè«çå¤ãè¿ãã¾ããããã¯duration.sign === 0ã¨åçã§ãã Temporal.Duration.prototype.constructor-
ãã®ã¤ã³ã¹ã¿ã³ã¹ãªãã¸ã§ã¯ãã使ããã³ã³ã¹ãã©ã¯ã¿ã¼é¢æ°ã§ãã
Temporal.Durationã®ã¤ã³ã¹ã¿ã³ã¹ã®å ´åãåæå¤ã¯Temporal.Duration()ã³ã³ã¹ãã©ã¯ã¿ã¼ã¨ãªãã¾ãã Temporal.Duration.prototype.days-
ãã®æéã®æ¥æ°ãè¡¨ãæ°å¤ãè¿ãã¾ãã
Temporal.Duration.prototype.hours-
ãã®æéã®æéæ°ãè¡¨ãæ°å¤ãè¿ãã¾ãã
Temporal.Duration.prototype.microseconds-
ãã®æéã®ãã¤ã¯ãç§æ°ãè¡¨ãæ°å¤ãè¿ãã¾ãã
Temporal.Duration.prototype.milliseconds-
ãã®æéã®ããªç§æ°ãè¡¨ãæ°å¤ãè¿ãã¾ãã
Temporal.Duration.prototype.minutes-
ãã®æéã®åãè¡¨ãæ°å¤ãè¿ãã¾ãã
Temporal.Duration.prototype.months-
ãã®æéã®ææ°ãè¡¨ãæ°å¤ãè¿ãã¾ãã
Temporal.Duration.prototype.nanoseconds-
ãã®æéã®ããç§æ°ãè¡¨ãæ°å¤ãè¿ãã¾ãã
Temporal.Duration.prototype.seconds-
ãã®æéã®ç§æ°ãè¡¨ãæ°å¤ãè¿ãã¾ãã
Temporal.Duration.prototype.sign-
ãã®æéãæ£ã®å¤ã®å ´åã¯
1ãè² ã®å¤ã®å ´åã¯-1ãã¼ãã®å ´åã¯0ãè¿ãã¾ãã Temporal.Duration.prototype.weeks-
ãã®æéã®é±æ°ãè¡¨ãæ°å¤ãè¿ãã¾ãã
Temporal.Duration.prototype.years-
ãã®æéã®å¹´æ°ãè¡¨ãæ°å¤ãè¿ãã¾ãã
Temporal.Duration.prototype[Symbol.toStringTag]-
[Symbol.toStringTag]ããããã£ã®åæå¤ã¯æåå"Temporal.Duration"ã§ãããã®ããããã£ã¯Object.prototype.toString()ã§ä½¿ç¨ããã¾ãã
ã¤ã³ã¹ã¿ã³ã¹ã¡ã½ãã
Temporal.Duration.prototype.abs()-
ãã®æéã®çµ¶å¯¾å¤ãæ ¼ç´ããæ°ãã
Temporal.Durationãªãã¸ã§ã¯ããè¿ãã¾ãï¼ãã¹ã¦ã®ãã£ã¼ã«ãã®çµ¶å¯¾å¤ã¯å¤ããã¾ãããã符å·ãæ£ã®å¤ã«ãªãã¾ãï¼ã Temporal.Duration.prototype.add()-
æ°ãã
Temporal.Durationãªãã¸ã§ã¯ãã使ãããã®æéã¨ï¼Temporal.Duration.from()ã§å¤æå¯è½ãªå½¢å¼ã§ï¼æå®ãããæéã®åè¨ãè¨å®ãã¦è¿ãã¾ããçµæã¯ãã©ã³ã¹ã®åããç¶æ ã«ãªãã¾ãã Temporal.Duration.prototype.negated()-
æ°ãã
Temporal.Durationãªãã¸ã§ã¯ãã使ãããã®æéã®ç¬¦å·ãå転ãããå¤ãè¨å®ãã¦è¿ãã¾ãï¼ãã¹ã¦ã®ãã£ã¼ã«ãã®çµ¶å¯¾å¤ã¯å¤ããã¾ãããã符å·ãå転ãã¾ãï¼ã Temporal.Duration.prototype.round()-
æ°ãã
Temporal.Durationãªãã¸ã§ã¯ãã使ããæå®ãããæå°åä½ã«ä¸¸ããæå®ãããæå¤§åä½ã«åããã¦åè¡¡åãã¦è¿ãã¾ãã Temporal.Duration.prototype.subtract()-
æ°ãã
Temporal.Durationãªãã¸ã§ã¯ãã使ãããã®æéã¨ï¼Temporal.Duration.from()ã§å¤æå¯è½ãªå½¢å¼ã§ï¼æå®ãããæéã¨ã®å·®åãè¨å®ãã¦è¿ãã¾ããããã¯ããã以å¤ã«ãããæéã®è² ã®å¤ã追å ãããã¨ã¨åçã§ãã Temporal.Duration.prototype.toJSON()-
ãã®æéã表ãæååãã
toString()ãå¼ã³åºããå ´åã¨åã ISO 8601 å½¢å¼ã§è¿ãã¾ããJSON.stringify()ã«ãã£ã¦æé»çã«å¼ã³åºããããã¨ãæå³ãã¦ãã¾ãã Temporal.Duration.prototype.toLocaleString()-
ãã®æéããè¨èªã«å¿ããå½¢å¼ã§è¡¨ããæååãè¿ãã¾ãã
Intl.DurationFormatAPI ã«å¯¾å¿ãã¦ããå®è£ ã§ã¯ããã®ã¡ã½ããã¯Intl.DurationFormatã«å§è²ãã¾ãã Temporal.Duration.prototype.toString()-
ãã®æéã表ãæååããISO 8601 å½¢å¼ã§è¿ãã¾ãã
Temporal.Duration.prototype.total()-
æå®ãããåä½ã§ã®åè¨æéãè¡¨ãæ°å¤ãè¿ãã¾ãã
Temporal.Duration.prototype.valueOf()-
TypeErrorãçºçãã¾ããããã«ãããç®è¡æ¼ç®ãæ¯è¼æ¼ç®ã§ä½¿ç¨ãããéãTemporal.Durationã®ã¤ã³ã¹ã¿ã³ã¹ãããªããã£ãåã¸æé»çã«å¤æããããã¨ã鲿¢ããã¾ãã Temporal.Duration.prototype.with()-
ä¸é¨ã®ãã£ã¼ã«ããæ°ããå¤ã«ç½®ãæããããããã®æéãè¡¨ãæ°ãã
Temporal.Durationãªãã¸ã§ã¯ããè¿ãã¾ãã
仿§æ¸
| Specification |
|---|
| Temporal> # sec-temporal-duration-objects> |