åèïŒ1.
åã® èšäº ãã¿ã€ã ãŸãŒã³ãã§ã¯ãç¹å®ã®ååãæã€ç±³åœã®ã¿ã€ã ãŸãŒã³ã®åé¡ã§ãã£ããã
ã ã
ã¿ã€ã ãŸãŒã³ ããšç¿»èš³ããŸããã ãã®å Žåãã
ã¿ã€ã ãŸãŒã³ ãã䜿çšããæ¹ãããæ£ç¢ºã§ãã ããã§ã¯ãããæ£ç¢ºãªç¿»èš³ã䜿çšãããŸãã
2.ãŠã£ãããã£ã¢ã®å°ããªãµã€ãããŒã§ã¯ãUTCãšã¯äœããGMTãšã®éãã«ã€ããŠã®ã¢ã€ãã¢ã衚瀺ãããŸã-
åå®äžçæ ïŒUTCïŒã¯ã瀟äŒãæéãšæéãèŠå¶ããåºæºã§ãã ååæéããæŽæ°ã®ç§æ°ãšãäžçæšæºæUT1ããã®ç§ã®å°æ°éšãç°ãªããŸããå»æ¢ãããã°ãªãããžæšæºæïŒGMTïŒã®ä»£ããã«UTCãå°å
¥ãããŸããã GMTã¹ã±ãŒã«ã¯äžåçãªã¹ã±ãŒã«ã§ãããå°çã®æ¯æ¥ã®å転ã«é¢é£ããŠãããããæ°ããUTCã¿ã€ã ã©ã€ã³ãå°å
¥ãããŸããã UTCã¹ã±ãŒã«ã¯ãçµ±äžãããååæéã¹ã±ãŒã«ïŒTAIïŒã«åºã¥ããŠãããæ°éã§ã®äœ¿çšã«ãã䟿å©ã§ããäžçäžã®ã¿ã€ã ãŸãŒã³ã¯ãUTCããã®æ£ããã³è² ã®ãªãã»ãããšããŠè¡šãããŸããUTCæéã¯å¬ã§ãå€ã§ãå€æãããªãããšã«æ³šæããŠãã ããã ãããã£ãŠãå€æéãžã®åãæ¿ããããå Žæã§ã¯ãUTCã«å¯Ÿãããªãã»ãããå€æŽãããŸããçŸåšã¯ãæ¥ä»ãæå»ãªã©ã®ãšã³ãã£ãã£ã«ãµãŒãã¹ãæäŸããæ§é ãåŒãç¶ãæ±ããŸãã
éç°ã¿ã€ã ã«ã€ããŠã®ãã€ãŒããæçš¿ããŠãã°ããããŠã
éç°ã¿ã€ã ã䜿ãããšã®ãã€ã³ãã¯äœãªã®ããšèããå§ããŸããã ãã¡ãããç§ã¯åœŒãã®ã³ãŒããèŠãŸããã§ããããæ¥ä»ãåŠçããã»ãšãã©ãã¹ãŠã®ã³ãŒãããŒã¹ãéç°æéã䜿çšãããšããæ確ã«ãªãããŸãããããããéç°æéãããªãã«åãå
¥ããããšã匷å¶ããã¢ãããŒãã®ããã«ããæ£ç¢ºã«ãªãã§ããã.NETã§ã¯æããã§ã¯ãªãããã€ãã®ãœãªã¥ãŒã·ã§ã³ã ãã®èšäºã§ã¯ãæ¥ä»ãšæå»ãæäœããããã®.NET APIã®æ¬ ç¹ã«ã€ããŠèª¬æããŸãã ãã®ãããã¯ã«å¯Ÿããç§ã®æ
床ã¯ããåã£ãŠããããã«èŠããŸããããã®èšäºãBCLïŒBase Class Library-
ãããTranslator ïŒã«åãçµãã§ããããŒã ã«ç¡ç€Œã«èŠããªãããšãé¡ã£ãŠã
ãŸãã COMãªã©ãšã®çžäºäœçšãèæ
®ã«å
¥ãã
DateTimeã®æå³ïŒStackOverflow Webãµã€ãã§ãDateTimeãæåŸ
ã©ããã®åäœãããŠããªããšãã質åã«åºããããšãå€ãã®å Žåããªãã¬ã¯ã·ã§ã³ã®ç¶æ
ã«ãªããŸãã çãã¯ç°¡åã§ããæ¥ä»ãšæå»ã§ãããïŒ ããããåé¡ãããæ
éã«åŠçãå§ãããšããã«ããã¹ãŠãããè€éã«ãªããŸãã ããšãã°ã次ã®ã³ãŒãã®
2ã€ã®ããããã£ã®åŒã³åºãéã§ã¯ããã¯ãå»ãŸãªãã£ããšããŸãã ããã§ã¯ããã¹ããªãŒå€æ°ã¯ã©ã®ãããªå€ãåãã®ã§ããããïŒ
DateTime utc = DateTime.UtcNow;<br>DateTime local = DateTime.Now;<br>bool mystery = local == utc;
æ£çŽãªãšããããã®ã³ãŒãã®å®è¡ãäœã«ã€ãªãããããããŸããã 3ã€ã®ããŒãžã§ã³ããããããããã«å€å°ã®æ£åœåããããŸãã
- å€ã¯åžžã«çã«ãªããŸã ã2ã€ã®å€ã¯åãç¬éã«é¢é£ä»ãããã1ã€ã ããããŒã«ã«ã«è¡šçŸããã2çªç®ã®å€ã¯æ®éçã§ãã
- å€ã¯åžžã«falseã«ãªããŸã ã2ã€ã®å€ã¯2ã€ã®ç°ãªãæ¥ä»å€ãè¡šããŸãã èªåçã«çãããªã
- ç¹°ãè¿ããŸãããããŒã«ã«ã¿ã€ã ãŸãŒã³ãUTCïŒ åå®äžçæ ïŒãšåæããŠããå Žåãã€ãŸã ã¿ã€ã ãŸãŒã³ããŸã£ããèæ
®ãããŠããªãå Žå-äž¡æ¹ã®å€ãçãããªããŸã
ã©ã®çããæ£ãããã¯ããŸãæ°ã«ããŸãã-ã³ãŒãã®åäœã®ããžãã¯ã®éèªææ§ã¯ãããæ·±ãåé¡ã®å
åã§ãã å®éããã¹ãŠãDateTime.Kindããããã£ã«æ»ããŸããããã«ãããDateTimeã¯3çš®é¡ã®å€ãè¡šãããšãã§ããŸãã
DateTimeKind.Utc ïŒUTCã®æ¥ä»ãšæå»
DateTimeKind.Local ïŒã³ãŒããå®è¡ãããã·ã¹ãã ã®ããŒã«ã«ãªæ¥ä»ãšæå»
DateTimeKind.Unspecified ïŒããŒãããããã ããªããããã§äœããããã«äŸåããŸãã
ããããã£ã®å€ã¯ãæäœããšã«ç°ãªãå¹æãæã¡ãŸãã ããšãã°ãToUniversalTimeïŒïŒã¡ãœããããæå®ãããŠããªããDateTimeå€ã«é©çšãããšãã¡ãœããã¯ããŒã«ã«å€ãå€æããããšããŠãããšä»®å®ããŸãã äžæ¹ãToLocalTimeïŒïŒã¡ãœããããæå®ãããŠããªããDateTimeå€ã«é©çšãããšãUTCã®å€ãæåã«ãã£ããšæ³å®ãããŸãã ããã¯ãåäœã®1ã€ã®ã¢ãã«ã§ãã
DateTimeãšTimeSpanããDateTimeOffsetãäœæããå Žåãåäœã¯ãããã«ç°ãªããŸãã
- UTCå€ã§ã¯ãã¹ãŠãåçŽã§ã-UTCã転éãããUTC +æå®ããããªãã»ãããè¡šçŸãåãåããã
- ããŒã«ã«å€ã¯ãšãã©ãtrueã«ãªããŸãïŒã³ã³ã¹ãã©ã¯ã¿ãŒã¯ãããã©ã«ãã§ã·ã¹ãã ã䜿çšããã¿ã€ã ãŸãŒã³ã§æå®ãããããŒã«ã«æéã®UTCããã®ãªãã»ãããããŠãŒã¶ãŒãæå®ãããªãã»ããã§ãã§ãã¯ããŸã
- æªæå®ã®å€ïŒãæªæå®ãïŒã¯åžžã«trueã§ãããç¹å®ã®ã¿ã€ã ãŸãŒã³ã®çŸå°æéãè¡šããŠããããããã®æç¹ã§ã®ãªãã»ããã¯æ£ç¢ºã§ãã
ç§ã¯ããªãã®ããšã¯ç¥ããŸããããç§ã«ãšã£ãŠãã®ç¶æ³ã¯ããããªã»ãã³ãã£ãã¯ãªãã¹ããªãŒãåŒãèµ·ãããŸãã æ°åã®ã·ãŒã±ã³ã¹ãå«ããæ°å€ãã¿ã€ããæã€ã®ãšåãã§ããã10é²æ°ãŸãã¯16é²æ°ãèŠã€ããããã«å¥ã®ããããã£ã䜿çšããå¿
èŠããããçãã¯ãããŠãã©ãæããŸããïŒãã§ãã
ãã¡ããã.NET 1.1ã§ã¯ãDateTimeKindããããã£ã¯å®å
šã«ååšããŠããŸããã§ããã ããã¯ãåé¡ãååšããªãã£ããšããæå³ã§ã¯ãããŸããã ããã¯ãç°ãªãçš®é¡ã®å€ãæ ŒçŽããäžè²«æ§ãä¿ãšããšããªãã¿ã€ãã«æå³ãäžããããšããæ··ä¹±ããåäœãæå³ããŸãã ããã¯ãæ¥ä»å€ãæ°žç¶çã«æªæå®ã§ãããšããä»®å®ã«åºã¥ããŠããŸããã
DateTimeOffsetæ§é ã䜿çšãããšåé¡ã¯è§£æ±ºããŸããïŒããã ããã§ãDateTimeåãããŸã奜ãã§ã¯ãªãããšãããããŸããã DateTimeOffsetã¯åœ¹ç«ã¡ãŸããïŒ ã¯ããäžéšã DateTimeOffsetåã®å€ã«ã¯æ確ãªæå³ããããŸããUTCããã®ãªãã»ãããæå®ããããŒã«ã«ã®æ¥ä»ãšæå»ãå«ãŸããŠããŸãã ããããä»ãç§ã¯ãäžæçãªãç¬éãšåæ§ã«ãçŸå°ãã®æ¥ä»ãšæå»ãæå³ããããšãåŸéãããããªãã«èª¬æããªããã°ãªããŸããã
ããŒã«ã«ã®æ¥ä»ãšæå»ã¯ãç¹å®ã®ã¿ã€ã ãŸãŒã³ã«é¢é£ä»ããããŠããŸããã çŸåšã¯ã2012幎3æ13æ¥16:00ã以éã§ããïŒ ããªãããã®äžçã®ã©ãã«ãããã«äŸåããŸãïŒã¡ãªã¿ã«ãç§ã¯ãŸã ISO以å€ã®ã«ã¬ã³ããŒãèæ
®ããŠããŸããïŒã ãããã£ãŠãDateTimeOffsetã«ã¯ãã¿ã€ã ãŸãŒã³ã«äŸåããªãã³ã³ããŒãã³ãïŒããã¯ã16:00 ...ãïŒãå«ãŸããŸãããUTCããã®ãªãã»ãããå«ãŸããŸããããã¯ãã¿ã€ã ã©ã€ã³ã®ãã
æç¹ã§ã®å€æã®å¯èœæ§ã瀺ããŸãã çžå¯Ÿæ§çè«ãç¡èŠãããšãå°çäžã®ãã¹ãŠã®äººã
ãåæã«çŸåšã®ç¬éãç¥èŠããŸãã æãã¹ããããããšïŒç¡éã«é«éïŒããã®ã€ãã³ãã®åãŸãã¯åŸã«å®å®ã®ã€ãã³ããçºçããŸãã ç¹å®ã®ã¿ã€ã ãŸãŒã³ã«ãããã©ããã¯é¢ä¿ãããŸããã ãã®ç¹ã§ãåå人ãç¹å®ã®ç¬éã«èŠ³æž¬ã§ããçŸå°ã®æ¥æãšæ¯èŒããŠãç¬éã¯ã°ããŒãã«ã§ãã
ïŒãŸã ããã«ããŸããïŒç¶ããŸããã-åã®æ®µèœããã®èšäºã§æãé£ããã£ãããšãé¡ã£ãŠããŸããéåžžã«éèŠãªæŠå¿µã説æããŠããŸãããïŒ
ãããã£ãŠãDateTimeOffsetã¯ïŒã°ããŒãã«ãªïŒç¹å®ã®æç¹ãæããŸãããããŒã«ã«ã®æ¥ä»ãšæå»ã§ãæ©èœããŸãã ã€ãŸãããã®æ§é ã¯ããŒã«ã«ã®æ¥ä»ãšæå»ãè¡šãã®ã«çæ³çãªã¿ã€ãã§ã¯ãããŸããããDateTimeã¯ããã§ã¯ãããŸããã DateTimeKind.Localããããã£ãèšå®ãããDateTimeã¯ãåãçç±ã§å®éã«ã¯ããŒã«ã«ã§ã¯ãããŸãã-䜿çšãããã·ã¹ãã ã®ããã©ã«ãã®ã¿ã€ã ãŸãŒã³ã«é¢é£ä»ããããŠããŸãã DateTimeKind.Unspecified圢åŒã®DateTimeã¯ãå Žåã«ãã£ãŠã¯å°ãåªããŠããŸã-ããšãã°ãDateTimeOffsetãäœæããå Žå-ããããäžèšã®ããã«ãã»ãã³ãã£ã¯ã¹ã¯ä»ã®å Žåã§ã¯å¥åŠã«èŠããŸãã ãã®çµæãDateTimeOffsetãDateTimeããçã«ããŒã«ã«ãªæ¥ä»ãšæå»ã衚瀺ããã®ã«é©ããã¿ã€ãã§ã¯ãããŸããã
DateTimeOffsetæ§é ã¯ãã©ã®ã¿ã€ã ãŸãŒã³ã察å¿ãããªãã»ãããæåã«äžãããããããªããããç¹å®ã®ã¿ã€ã ãŸãŒã³ãžã®ãã€ã³ãã«ã¯é©ããŠããŸããã .NET 3.5ã«ã¯ãé©åãªTimeZoneInfoã¯ã©ã¹ããããŸããããç¹å®ã®ã¿ã€ã ãŸãŒã³ã®çŸå°æéããšããã¿ã€ãã¯ãããŸããã ãããã£ãŠãDateTimeOffsetåã®å€æ°ã䜿çšãããšãç¹å®ã®ã¿ã€ã ãŸãŒã³ã®ç¹å®ã®æå»ã¯ããããŸããããã®æå»ã®ãªãã»ãããå€æŽãããå¯èœæ§ãããããïŒéåžžã¯å€æéã®ããïŒãçŸå°æéã¯1ååŸã«ãªããŸãã
æ¥ä»ãšæéã¯ã©ãã§ããïŒããã«å
ç«ã¡ããæ¥ä»ãšæå»ããæ ŒçŽããå€ã®ã¿ã説æããŸããã ãŸããæ¥ä»ã®ã¿ãŸãã¯æå»ã®ã¿ãæ ŒçŽãããã¿ã€ãã«ã€ããŠã¯ã©ãã§ããããïŒ å€ãã®å Žåããã¡ãããæ¥ä»ã®ã¿ãä¿åããå¿
èŠããããŸãããæéã®ã¿ãä¿åããå¿
èŠãããå ŽåããããŸãã
ããã«ãã¯ããDateTimeåã䜿çšããŠæ¥ä»ãä¿åã§ããŸããç¹å®ã®æ¥ä»ãšæå»ã®æ¥ä»ãè¿ãDateTime.Dateããããã£ããããŸãããçå€äžã«æå»ãèšå®ãããå¥ã®DateTimeå€ãšããŠã®ã¿ã§ãã ããã¯ããæ¥ä»ã®ã¿ãïŒãŸãã¯ãæéã®ã¿ã-.NETããããè¡ãããã«TimeSpanã䜿çšããŠãããããç°¡åã«èå¥ã§ããå¥ã®ã¿ã€ããæã€ããšãšã¯ç°ãªããŸãã
ãããŠãã¿ã€ã ãŸãŒã³ã¯ã©ãã§ããïŒ ããã§ã¯ãTimeZoneInfoã¯ããªãé©åã«èŠããŸããå
ã»ã©èšã£ãããã«ãTimeZoneInfoã¯æªããããŸããã 確ãã«ã圌ã«ã¯2ã€ã®å€§ããªåé¡ãšããã€ãã®å°ããªåé¡ããããŸãã
ãŸããWindowsã¿ã€ã ãŸãŒã³èå¥åãåºç€ãšããŠäœ¿çšãããŸãã äžæ¹ã§ã¯è«ççã§ãããä»æ¹ã§ã¯ãäžçã®ä»ã®äººã
ã䜿çšãããã®ã§ã¯ãããŸããã ç§ãèŠããã¹ãŠã®éWindowsã·ã¹ãã ã¯ãããããOlsonã¿ã€ã ãŸãŒã³ããŒã¿ããŒã¹ïŒtzãŸãã¯zoneinfoãšãåŒã°ããŸãïŒã䜿çšããç¬èªã®èå¥åãæã£ãŠããŸãã ããšãŒããã/ãã³ãã³ããŸãã¯ãã¢ã¡ãªã«/ Los_Angelesããªã©ãããããèŠããããããŸãã-ãããã¯ãªã«ãœã³ã®èå¥åã§ãã å°çæ
å ±ãæäŸããWebãµãŒãã¹ã䜿çšããŸããOlsonèå¥åã䜿çšããå¯èœæ§ããããŸãã å¥ã®ã«ã¬ã³ããŒã·ã¹ãã ã䜿çšããŸããOlsonèå¥åã䜿çšããå¯èœæ§ããããŸãã ããã«ãåé¡ããããŸãã ããšãã°ã
Unicodeã³ã³ãœãŒã·ã¢ã ã CLDRã䜿çšããŠè§£æ±ºããããšããŠ
ããèå¥åã®å®å®æ§ãåããŠããŸãããå°ãªããšãããªãã«ã¯ãã£ã³ã¹ããããŸãã TimeZoneInfoã2ã€ã®èå¥åã¹ããŒã éã®éä¿¡ã確ç«ããäœããã®æ¹æ³ãæäŸãããããŸãã¯.NETã®å¥ã®å Žæã§å®è£
ãããã®ã¯çŽ æŽãããããšã§ãã ïŒNoda Timeã¯äž¡æ¹ã®èå¥åã®ã»ãããç¥ã£ãŠããŸããããããã³ã°ã¯ãŸã 誰ããå©çšã§ããããã§ã¯ãããŸãããæçµãªãªãŒã¹ã®åã«ä¿®æ£ãããŸããïŒ
第äºã«ããã®ã¯ã©ã¹ã¯DateTimeãšDateTimeOffsetã®äœ¿çšã«åºã¥ããŠããŸãã 䜿çšããå Žåã¯æ³šæãå¿
èŠã§ããããã¿ã€ãã®DateTimeãèšå®ããŠå¥ã®ã¿ã€ããæž¡ããšãåé¡ãçºçããå¯èœæ§ããããŸãã ã¯ã©ã¹ã¯ããªãããææžåãããŠããŸãããæ£çŽãªãšããããã®çš®ã®ããšã説æããããšã¯ãççŸããçšèªã䜿çšããŠç¶æ³ãæ··ä¹±ãããã«æ¬è³ªçã«éåžžã«å°é£ã§ãã
ããŒã«ã«ã®æ¥ä»ãšæå»ã®å€ããããŸããŸãã¯èª€ã£ãŠãããšããåé¡ããããŸãã ãããã¯å€æé/å¬æéãžã®ç§»è¡äžã«çºçããŸãïŒæéãé²ãããšïŒããšãã°ã1ïŒ00ãã2:00ãŸã§ïŒãééã£ãçŸå°æéãååŸããå¯èœæ§ããããŸãïŒããšãã°ããã®æ¥ã®1:30ã¯æ¥ãŸããïŒã ã¯ããã¯ãé
ããããšïŒããšãã°ã2ïŒ00ãã1:00ãŸã§ïŒãããã«ãããããŸãããçããŸãã1.30ã¯2åçºçããŸãã ç¹å®ã®å€ãæ£ãããªãããŸãã¯ãããŸããªå Žåã¯ãTimeZoneInfoã䜿çšããŠæ瀺çã«ç¢ºèªã§ããŸããããã®ãããªå¯èœæ§ã«ã€ããŠã¯ç°¡åã«å¿ããŠããŸããŸãã UTCã§ã¿ã€ã ãŸãŒã³ã䜿çšããŠããŒã«ã«æéãå€æããããšãããšãæéãæ£ãããªãå Žåã«äŸå€ãã¹ããŒãããŸãã ãã ãããããŸããªæéã¯æšæºã®ããã©ã«ããšããŠäœ¿çšãããŸãïŒå€æéã§ã¯ãããŸããïŒã ãã®çš®ã®ãœãªã¥ãŒã·ã§ã³ã§ã¯ãéçºè
ã䜿çšãããŠããæ©èœãèæ
®ããããšããã§ããŸããã ã©ã®ããšã«ã€ããŠè©±ã...
è€éãããä»ãããªãã¯éåžžã«ããèãããããããŸããïŒãç§ã¯ããšãã象ãå¹ãé£ã°ããŸããã ç§ã¯ããã«ã€ããŠèããããªã-ãªãããªãã¯ç©äºããããªã«è€éã«ããããšããŠããã®ã§ããïŒ ç§ã¯äœå¹Žã.NET APIã䜿çšããŠããŸããããåé¡ã¯çºçããŠããŸãããã ãããããªããç§ã¯3ã€ã®ãªãã·ã§ã³ãæäŸã§ããŸãïŒ
- ããªãã¯ç§ãããã¯ããã«è³¢ããçŽæçãªã¬ãã«ã§ãããã®å°é£ããã¹ãŠç解ããŠããŸãã DateTimeåã®å€æ°ã«ã¯åžžã«æ£ãããã¥ãŒã䜿çšããŸãã å¿
èŠãªå Žå-DateTimeOffsetã䜿çšããåžžã«ééã£ããŸãã¯ãããŸããªããŒã«ã«æ¥ä»/æå»ã§æ£ããããšãè¡ããŸãã ééããªãããªããžã§ã¯ãã®ç¶æ
ãžã®å
±æã¢ã¯ã»ã¹ãåãããã³ããããã³ã°ãã«ãã¹ã¬ããã³ãŒããæãå¹ççãã€ä¿¡é Œæ§ã®é«ãæ¹æ³ã§èšè¿°ããŸãã äžäœäœãèªãã§ãã®ïŒ
- ããªãã¯ãããã®åé¡ã«ééããŸãããã倧éšåã¯ããããå¿ããŠããŸãã-æåŸã«ã蚱容ã§ããçµæãåŸãããã«å®éšããŠããéïŒãŸãã¯å°ãªããšããã¹ãã«åæ Œããããã«ããã®ãããªãã¹ãã¯æŠå¿µçã«æ£ãããªããããããŸãããïŒããªãã®äººçã®ãã£ã10åããããããŸããã§ããã ãã®åé¡ã«æžæã£ãŠãããããããŸããããåé¡ã¯APIã§ã¯ãªãããªãã«ãããšå€æããŸããã
- å€éã«åžžã«ãªãã«ãªã£ãŠããïŒã€ãŸããå¬/å€ã®ç§»è¡ã®åœ±é¿ãåããªãïŒã³ã³ãã¥ãŒã¿ãŒäžã§åãã¿ã€ã ãŸãŒã³ã§åäœãããããéå±ãªã¿ã¹ã¯ã®ã³ãŒããã¹ããæ€èšããããããã®åé¡ã¯çºçããŸããã§ããã ããªãã¯ããçšåºŠå¹žéã§ãããããã§ãããªãã¯ã¿ã€ã ãŸãŒã³ãå¿ããŸãã
åè«ã¯ãããŸããããåé¡ã¯æ¬åœã«çŸå®çã§ãã ãããŠããã®èšäºã®åã«ãããŒã«ã«ãæéãšãã°ããŒãã«ãæéã®éãã«ã€ããŠèããããšããªããªããããªãã¯ããããã£ãã ããã¯éèŠãªéãã§ãã2é²æµ®åå°æ°ç¹æ°ãš10é²æµ®åå°æ°ç¹æ°ã®éãã«äŒŒãŠããŸãã ãšã©ãŒã¯æããã§ã¯ãªãã蚺æãé£ããã説æãäžååã§ãä¿®æ£ãäžååã§ãããã°ã©ã ã®ä»ã®å Žæã§åçºããå ŽåããããŸãã
æ¥ä»/æå»ãæ ŒçŽããå€æ°ã®å€ãåŠçããã®ã¯æ¬åœã«ç°¡åã§ã¯ãããŸããã å€/å¬æéãžã®ç§»è¡ã«ãããæ·±å€ã«å§ãŸããªãæ¥ãªã©ã®äžå¿«ãªã±ãŒã¹ããããŸãïŒããšãã°ã2010幎10æ17æ¥æ¥ææ¥ããã©ãžã«ã§ã¯1:00ã«å§ãŸããŸããïŒã ç¹ã«äžéãªå Žåã¯ããã«ãã«ã¬ã³ããŒã·ã¹ãã ïŒã°ã¬ãŽãªãªããžã¥ãªã¢ã³ãã³ãããä»æãªã©ïŒã§äœæ¥ããå¿
èŠããããŸãã 20äžçŽåé ã®æ¥ä»ãšæå»ãæ±ã£ãŠããå Žåã¯ãå³å¯ã«çµåºŠã®åãããããäžžãããããå€ã«ã·ãããããããã¿ã€ã ãŸãŒã³ã®éåžžã«å¥åŠãªç§»è¡ã«æ°ã¥ãã§ãããïŒããšãã°ã1911幎ã®ããªïŒã å®éã®ã·ããã®æ°é±éåã«ãã¿ã€ã ãŸãŒã³ãå€æŽããæ¿åºãããã«ã€ããŠã®èŠåãšãšãã«åºäŒãããšããããŸãã ãŸããã¿ã€ã ãŸãŒã³èå¥åã®å€æŽãçºçããå ŽåããããŸãïŒããšãã°ãã¢ãžã¢/ã«ã«ã«ãã¿ããã¢ãžã¢/ã³ã«ã«ã¿ïŒã
ãã¡ãããããã¯ãã¹ãŠãå®è£
ããããšããŠããé¢é£ããããžãã¹ã«ãŒã«ã®è¡šé¢ã«ãããŸãã ãããŠã圌ããé£ããããšãã§ããŸãã ãããã®ãã¹ãŠã®è€éããèãããšãå°ãªããšãããªããæå³ããããšãæ¯èŒçæ確ã«è¡šçŸã§ããAPIãå¿
èŠã§ãã
éç°ã¿ã€ã ã¯å®ç§ã§ããïŒãã¡ããéããŸãã éç°ã¿ã€ã ã«ã¯ããã€ãã®åé¡ããããŸãã
1.äžèšã®ãã¹ãŠã«ãããããããç§ã¯æ¥ä»ãšæå»ã®çè«ã«é¢ããŠã¯ã¢ããã¥ã¢ã§ãã
調æŽã®2çªç®ã¯ç§ãæ··ä¹±ãããŸãã ãŠãªãŠã¹æŠã®ã°ã¬ãŽãªãªæŠãžã®å€æŽç¹ãèãããšãæ³£ããããšãã欲æ±ãç§ãèŠãããããã£ãŠãç§ã¯ãŸã æ°ã¥ããŠããŸããã ç§ã®ç¥ãéããJoda
Timeã®äœè
ã§
JSR-310ã®è²¬ä»»è
ã§ããStephen Colebourneã¯ã¡ãŒãªã³ã°ãªã¹ãã«æœãã§ããŸãããNoda Timeãããžã§ã¯ãã®åå è
ã¯1人ãå°é家ã§ã¯ãããŸããã ïŒã¡ãªã¿ã«ã圌ã¯æåã®éç°ã¿ã€ã ãã¬ãŒã³ããŒã·ã§ã³ã«åå ããŸãããéšå±ã®èª°ããã°ã¬ãŽãªãªæŠãšISO-8601æšæºã«ã¬ã³ããŒã®éããç¥ã£ãŠãããã©ããå°ããŸããã圌ã¯æãæããŠæ£ããçããããŸããããããŠåœŒã¯çããïŒãç§ã¯ã¹ãã£ãŒãã³ã»ã³ãŒã«ããŒã³ã§ãããç§ã¯ã»ãšãã©åããŸããïŒã
2.ãŸã å®äºããŠããŸããã å®è£
ããªããã°ãåªããAPIèšèšã¯åœ¹ã«ç«ã¡ãŸããã
3.ééããªããšã©ãŒãçºçããŸããBCLã³ãã³ãã³ãŒãã¯äžçäžã®äœåäžå°ãã®ãã·ã³ã§åžžã«å®è¡ãããŠããŸãã ãšã©ãŒã¯ããã«è¡šç€ºãããŸãã
4.ç§ãã¡ã«ã¯ãªãœãŒã¹ããããŸãã-ç§ãã¡ã¯åã³ã§åãéçºè
ã®ã¢ã¯ãã£ããªã°ã«ãŒãã§ãã ç§ã¯ããã«ã€ããŠåŸæããŠããããã§ã¯ãããŸããïŒããã¯æ¬åœã«çŽ æŽãããããšã§ãïŒããè¿œå ã®ããããããã¥ã¡ã³ããªã©ã®äœæ¥ã«å²ãåœãŠãããæéã«ã¯é¿ããããªãåé¡ããããŸãã
5.ç§ãã¡ã¯BCLã®äžéšã§ã¯ãããŸããã LINQ to SQLïŒãŸãã¯NHibernateïŒã¯ãšãªã§Noda Timeã䜿çšãããã§ããïŒ ããã°ã£ãŠã æåŸ
以äžã«æåãããšããŠããäœäžçŽã«ãããã£ãŠç§ãã¡ã«äŸåããä»ã®ãªãŒãã³ãœãŒã¹ãããžã§ã¯ãã¯ãªãã ãããšæããŸãã ç¹å®ã®ç®æšãéæããããã®æè»æ§ãšåçŽãã®ãã©ã³ã¹ãç¶æããããšããŸããïŒãã¡ãããããå€ãã®åªåãæã£ãŠïŒã ã©ããããããã䜿çšãããã¶ã€ã³ã¹ã¿ã€ã«ã«é¢ããå¥ã®ã¡ã¢ãäœæããJoda Timeãã¶ã€ã³ãš.NETã§äœ¿çšãããã¶ã€ã³ã®äž¡æ¹ãšæ¯èŒããŸãã æè¯ã®çµæã¯ãçµæãšããŠåŸãããã¿ã€ãã®ã»ããã§ãããåã¿ã€ãã«ã¯éåžžã«æ確ãªåœ¹å²ããããŸãã 詳现ã«ã€ããŠã¯èª¬æããŸããããã®ããã®ããã¥ã¡ã³ãããã®ä»ã®ã¡ã¢ããããŸãã
å¥åŠãªããšã«ãBCLã«åãçµãã§ããããŒã ããã®èšäºã«æ³šæãæãã.NET 6ã®APIãæ ¹æ¬çã«åèšèšããããšã決å®ããæ¹ãè¯ãã§ãããïŒ ".NET 5"è¹ã¯æ¢ã«çºå£²ãããŠãããšæããŸãïŒã ãããŠããããè¡ã£ãŠããéãç§ã¯åã³ãäžããä»ã®å€ãã®ãããžã§ã¯ãããããšç¢ºä¿¡ããŠããŸã-ççŽã«èšã£ãŠãæ¥ä»ãšæå»ã®åé¡ã¯.NETã³ãã¥ããã£ã«ãšã£ãŠé·ãéç§ã®è©ã®äžã«ã®ã¿ååšããã«ã¯éèŠãããŸãã
çµè«.NET APIã«é倧ãªæ¬ é¥ãããããšãçŽåŸããŠããã ããã°å¹žãã§ãã ãããããç§ã¯ããªãã«ãéç°ã¿ã€ã ããã芪ããç¥äººã«å€ãããšç¢ºä¿¡ããŸããããããã¯äž»ãªç®æšã§ã¯ãããŸããã§ããã
çµã¿èŸŒã¿åã®æ¬ ç¹ãç¹ã«DateTimeã®ã»ãã³ãã£ãã¯ãªãããŸãããæ¬åœã«ç解ããŠããå Žåã¯ãã³ãŒãã§ãããã®åã现å¿ã®æ³šæãšæ£ç¢ºãã§äœ¿çšããå¿
èŠããããŸãããããŠãããã ããç§ã幞ãã«ããŸããïŒãŸãããã®äœåãæåŸãŸã§èªãã ãã翻蚳ã«æéãè²»ãããã®ã¯ç¡é§ã§ã¯ãªãã£ãããšãæå³ããŸã-翻蚳è
ã®ã¡ã¢ïŒãéåžžã«ç¡æã®ç¿»èš³ïŒcïŒAlien V.F. å¥åhDrummerãããã«ãªãªãžãã«ã