è«ççã«ã¯ãæ¥ä»ãšæå»ã«é¢é£ãã次ã®ã¿ã€ãã®å€ãåºå¥ã§ããŸãã
- æ¥æ -ãå»çåæã®è³æã¯2014幎1æ15æ¥13:17:15ã«åéãããŸããã
- æéã®ãªãæ¥ä» -ããšãã°ãã2016幎2æ2æ¥ã«æ°ããå¥çŽãçºå¹ããŸãã
- æééé -ãã¬ããŒãã¯3å15ç§ã§çæãããŸããã
- èšç»ãããã€ãã³ãã®ã¹ã±ãžã¥ãŒã« -ãå¥ã®ã·ã¹ãã ããã®ããŒã¿ã€ã³ããŒãã¯å¹³æ¥10:00ã«çºçããå¿ èŠããããŸãã
äžè¬çãªæšå¥šäºé ãå¿ããã«ãåé ç®ãåå¥ã«æ€èšããŸãã
æ¥æ
ããšãã°ãåæã®ããã«ææãåéããç 究æã¯ã¿ã€ã ãŸãŒã³+2ã«ãããåæã®ã¿ã€ã ãªãŒãªå®è¡ãç£èŠãããäžå€®ãã©ã³ãã¯ãã«ã+1ã«ãããŸãã äŸã«ç€ºãããŠããæéã¯ãæåã®å®éšå®€ã§ææãåéãããšãã«èšé²ãããŸããã çåãçããŸã-äžå€®å±ã¯äœæã®æ°åãèŠãã¹ãã§ããïŒ äžå€®ãªãã£ã¹ã®ãœãããŠã§ã¢ã¯ã2014幎1æ15æ¥12æ17å15ç§ã«è¡šç€ºãããã¹ãã§ããããšã¯æããã§ããæéã«å¿ããŠããã®ç¬éã«ã€ãã³ããçºçããããã§ãã
ããŒã¿ãã¯ã©ã€ã¢ã³ããããµãŒããŒãžããŸãã¯ã¯ã©ã€ã¢ã³ããããµãŒããŒãžããŸãã¯ã¯ã©ã€ã¢ã³ããããµãŒããŒãžããŸãã¯ã¯ã©ã€ã¢ã³ããããµãŒããŒãžããŒã¿ãééããäžé£ã®å¯èœãªã¢ã¯ã·ã§ã³ã®1ã€ãèããŠãã ããã
- å€ã¯ã¯ã©ã€ã¢ã³ãã§äœæãããŸããããšãã°ã2016幎3æ2æ¥15ïŒ13ïŒ36ãã¯ã©ã€ã¢ã³ãã¯ã¿ã€ã ãŸãŒã³+2ã«ãããŸãã
- å€ã¯ããµãŒããŒã«éä¿¡ããããã®æååè¡šçŸã«å€æãããŸã-ã2016-03-02T 15ïŒ13ïŒ36 + 02ïŒ00ãã
- ã·ãªã¢ã«åãããããŒã¿ããµãŒããŒã«éä¿¡ãããŸãã
- ãµãŒããŒã¯æå»ãæ¥ä»/æå»ãªããžã§ã¯ãã«ãã·ãªã¢ã©ã€ãºããçŸåšã®ã¿ã€ã ãŸãŒã³ã«æ»ããŸãã ããšãã°ããµãŒããŒã+1ã§å®è¡ãããŠããå Žåããªããžã§ã¯ãã«ã¯2016幎3æ2æ¥14ïŒ13ïŒ36ãå«ãŸããŸãã
- ãµãŒããŒã¯ããŒã¿ãããŒã¿ããŒã¹ã«æ ŒçŽããŸãããã¿ã€ã ãŸãŒã³ã«é¢ããæ å ±ã¯å«ãŸããŸãã-æãäžè¬çã«äœ¿çšãããæ¥ä»/æå»åã¯ãåã«ããã«ã€ããŠäœãç¥ããŸããã ãããã£ãŠãããŒã¿ããŒã¹ã¯2016幎3æ2æ¥14ïŒ13ïŒ36ã«ãäžæãªãã¿ã€ã ãŸãŒã³ã«ä¿åãããŸãã
- ãµãŒããŒã¯ããŒã¿ããŒã¹ããããŒã¿ãèªã¿åãã2016幎3æ2æ¥14ïŒ13ïŒ36ã®å€ãæã€å¯Ÿå¿ãããªããžã§ã¯ããäœæããŸãã ãŸãããµãŒããŒã¯+1ã¿ã€ã ãŸãŒã³ã§å®è¡ãããããããã®å€ãåãã¿ã€ã ãŸãŒã³å ã§è§£éãããŸãã
- å€ã¯ãã¯ã©ã€ã¢ã³ããžã®éä¿¡çšã«æååè¡šçŸã«å€æãããŸã-ã2016-03-02T 14ïŒ13ïŒ36 + 01ïŒ00ãã
- ã·ãªã¢ã«åãããããŒã¿ãã¯ã©ã€ã¢ã³ãã«éä¿¡ãããŸãã
- ã¯ã©ã€ã¢ã³ãã¯åä¿¡ããå€ãæ¥ä»/æå»ãªããžã§ã¯ãã«ãã·ãªã¢ã©ã€ãºããçŸåšã®ã¿ã€ã ãŸãŒã³ã«æ»ããŸãã ããšãã°ã-5ã®å Žåã衚瀺ãããå€ã¯2016幎3æ2æ¥09ïŒ13ïŒ36ã«ãªããŸãã
ãã¹ãŠãå šäœçãªããã«èŠããŸããããã®ããã»ã¹ã§äœãããŸããããªãããèããŠã¿ãŸãããã å®éãããã§ã®åé¡ã¯ã»ãšãã©ãã¹ãŠã®ã¹ãããã§çºçããå¯èœæ§ããããŸãã
- ã¯ã©ã€ã¢ã³ãã®æéã¯ãã¿ã€ã ãŸãŒã³ãªãã§åœ¢æã§ããŸããããšãã°ãDateTimeKind.Unspecifiedãæå®ãã.NETã®DateTimeã¿ã€ãã§ãã
- ã·ãªã¢ã«åãšã³ãžã³ã¯ãã¿ã€ã ãŸãŒã³ãªãã»ãããå«ãŸãªã圢åŒã䜿çšããå ŽåããããŸãã
- ãªããžã§ã¯ãã«ãã·ãªã¢ã©ã€ãºãããšããç¹ã«ãèªå®¶è£œããã·ãªã¢ã©ã€ã¶ãŒ-ãµãŒããŒãšã¯ã©ã€ã¢ã³ãã®äž¡æ¹ã§ãã¿ã€ã ãŸãŒã³ãªãã»ããã¯ç¡èŠã§ããŸãã
- ããŒã¿ããŒã¹ããèªã¿åãå Žåãæ¥ä»/æå»ãªããžã§ã¯ãã¯ã¿ã€ã ãŸãŒã³ãªãã§åœ¢æã§ããŸããããšãã°ãDateTimeKind.Unspecifiedãæå®ãã.NETã®DateTimeåã§ãã ããã«ã.NETã®DateTimeã䜿çšããå®éã«ã¯ãæžç®ã®çŽåŸã«å¥ã®DateTimeKindãæ瀺çã«æå®ããªãå Žåããããå®éã«å®éã«è¡ãããŸãã
- å ±éã®ããŒã¿ããŒã¹ã§åäœããã¢ããªã±ãŒã·ã§ã³ãµãŒããŒãç°ãªãã¿ã€ã ãŸãŒã³ã«ããå Žåãã¿ã€ã ãªãã»ããã«é¢ããŠæ·±å»ãªæ··ä¹±ãçããŸãã ãµãŒããŒAã«ãã£ãŠããŒã¿ããŒã¹ã«èšé²ããããµãŒããŒBã«ãã£ãŠèªã¿åãããæ¥ä»/æå»ã®å€ã¯ããµãŒããŒBã«ãã£ãŠèšé²ããããµãŒããŒAã«ãã£ãŠèªã¿åãããåãåæå€ãšã¯èããç°ãªããŸãã
- ãããã«ãããå¥ã®ãã«ãã«ã¢ããªã±ãŒã·ã§ã³ãµãŒããŒã転éãããšãæ¢ã«ä¿åãããŠããæ¥ä»/æå»ã®å€ã誀ã£ãŠè§£éãããŸãã
ããããäžèšã®ãã§ãŒã³ã§æãæ·±å»ãªæ¬ é¥ã¯ããµãŒããŒã®ããŒã«ã«ã¿ã€ã ãŸãŒã³ã®äœ¿çšã§ãã å€æéããªãå Žåãè¿œå ã®åé¡ã¯ãããŸããã ããããããã§ãªããã°ãããªãã¯å€ãã®äžå¿«ãªé©ããåŸãããšãã§ããŸãã
å€/å¬æéã®å€æã«ãŒã«ã¯ãå³å¯ã«èšãã°å€æ°ã§ãã åœã«ãã£ãŠã¯èŠåãå€æŽãããå Žåãããããããã®å€æŽã¯äºåã«ã·ã¹ãã ã®æŽæ°ã«çµã¿èŸŒãå¿ èŠããããŸãã å®éã«ã¯ããã®ã¡ã«ããºã ãæ£ããåäœããªãç¶æ³ãç¹°ãè¿ãçºçããŠããããã®çµæã䜿çšãããŠãããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãŸãã¯ãµãŒãããŒãã£ã©ã€ãã©ãªã®ä¿®æ£ããã°ã©ã ãã€ã³ã¹ããŒã«ããããšã§è§£æ±ºããŸããã åãåé¡ãåçºããå¯èœæ§ã¯ãŒãã§ã¯ãªããããããããåé¿ãããããšãä¿èšŒããæ¹æ³ãçšæããããšããå§ãããŸãã
äžèšã®èæ ®äºé ãèæ ®ããŠãæéã®è»¢éãšä¿åã«å¯Ÿããæãä¿¡é Œæ§ã®é«ãã·ã³ãã«ãªã¢ãããŒããçå®ããŸãããµãŒããŒãšããŒã¿ããŒã¹ã§ã¯ããã¹ãŠã®å€ãUTCã¿ã€ã ãŸãŒã³ã«ããå¿ èŠããããŸãã
ãã®èŠåãç§ãã¡ã«äžãããã®ãèããŠãã ããïŒ
- ãµãŒããŒã«ããŒã¿ãéä¿¡ãããšãããµãŒããŒãæå»ãUTCã«æ£ããå€æã§ããããã«ãã¯ã©ã€ã¢ã³ãã¯ã¿ã€ã ãŸãŒã³ãªãã»ãããéä¿¡ããå¿ èŠããããŸãã å¥ã®æ¹æ³ãšããŠã¯ãã¯ã©ã€ã¢ã³ãã«ãã®å€æã矩åä»ããããšã§ãããæåã®ãªãã·ã§ã³ã¯ããæè»ã§ãã ãµãŒããŒããããŒã¿ãåä¿¡ãããšãã¯ã©ã€ã¢ã³ãã¯æ¥ä»ãšæå»ãããŒã«ã«ã¿ã€ã ãŸãŒã³ã«å€æããŸããã©ã®ãããªå Žåã§ããæå»ã¯UTCã§æ¥ãããšãç¥ã£ãŠããŸãã
- UTCã«ã¯å€æéã®å€æŽã¯ãªããããããã«é¢é£ããåé¡ã¯é¢ä¿ãããŸããã
- ããŒã¿ããŒã¹ããèªã¿åãå ŽåããµãŒããŒã¯æéå€ãå€æããå¿ èŠã¯ãããŸãããUTCã«å¯Ÿå¿ããããšãæ瀺çã«ç€ºãã ãã§ååã§ãã ããšãã°ã.NETã§ã¯ãDateTimeKind.Utcã®æéãªããžã§ã¯ãã«DateTimeKindãèšå®ããããšã§ãããå®çŸã§ããŸãã
- å ±éããŒã¿ããŒã¹ã䜿çšãããµãŒããŒéã®ã¿ã€ã ãŸãŒã³ã®éããããã³1ã€ã®ãŸãŒã³ããå¥ã®ãŸãŒã³ãžã®ãµãŒããŒã®è»¢éã¯ãåä¿¡ããŒã¿ã®æ£ç¢ºãã«åœ±é¿ããŸããã
ãã®ã«ãŒã«ãå®è£ ããã«ã¯ã次ã®3ã€ã®ããšãè¡ãã ãã§ååã§ãã
- æ¥ä»/æå»ã®å€ãUTCããããŒã«ã«ã¿ã€ã ãŸãŒã³ã«ããŸãã¯ãã®éã«æ£ãã転éãããããã«ãã·ãªã¢ã«åããã³éã·ãªã¢ã«åã¡ã«ããºã ãäœæããŸãã
- ãµãŒããŒåŽãã·ãªã¢ã©ã€ã¶ãŒãUTCã§æ¥ä»/æå»ãªããžã§ã¯ããäœæããããšã確èªããŸãã
- ããŒã¿ããŒã¹ããæžç®ãããšãã¯ãæ¥ä»/æå»ãªããžã§ã¯ããUTCã§äœæãããŠããããšã確èªããŠãã ããã ãã®é ç®ã¯ãã³ãŒããå€æŽããã«æäŸãããå ŽåããããŸãããã¹ãŠã®ãµãŒããŒã®ã·ã¹ãã ã¿ã€ã ãŸãŒã³ã®ã¿ãUTCã«èšå®ãããŸãã
äžèšã®èæ ®äºé ãšæšå¥šäºé ã¯ã2ã€ã®æ¡ä»¶ãçµã¿åãããå Žåã«æ£åžžã«æ©èœããŸãã
- ã·ã¹ãã èŠä»¶ã§ã¯ãããŒã«ã«æéãã¿ã€ã ãŸãŒã³ãªãã»ãããä¿åããã圢åŒã§æ£ç¢ºã«è¡šç€ºããå¿ èŠã¯ãããŸããã ããšãã°ãèªç©ºåžã§ã¯ã空枯ã®å Žæã«å¯Ÿå¿ããã¿ã€ã ãŸãŒã³ã§åºçºæå»ãšå°çæå»ãå°å·ããå¿ èŠããããŸãã ãŸãã¯ããµãŒããŒãç°ãªãåœã§äœæãããè«æ±æžãå°å·ããããã«éä¿¡ããå ŽåããããããçŸå°æéã«ãªãããµãŒããŒã®ã¿ã€ã ãŸãŒã³ã«å€æãããŸããã
- ã·ã¹ãã å ã®æ¥ä»ãšæå»ã®å€ã¯ãã¹ãŠã絶察ãã§ããã€ãŸãã UTCã®åäžã®å€ã«å¯Ÿå¿ããå°æ¥ãŸãã¯éå»ã®æç¹ãèšè¿°ããŸãã ããšãã°ããæã¡äžããã±ããã®æã¡äžãã¯23:00ããšãæéã«è¡ããããããŸãã¯ãäŒè°ã¯ãã³ã¹ã¯æé13:30ãã14:30ã«éå¬ãããŸããã ç°ãªãã¿ã€ã ãŸãŒã³ã§ã¯ããããã®ã€ãã³ãã®æ°ã¯ç°ãªããŸãããåãæç¹ãè¡šããŸãã ãã ããå Žåã«ãã£ãŠã¯ããœãããŠã§ã¢èŠä»¶ããçžå¯ŸçãªãçŸå°æéãæå³ããããšããããŸãã ããšãã°ãããã®ãã¬ãæŸéã¯ããã£ã³ãã«ã®æ¯åºããããã¹ãŠã®åœã§9:00ãã10:00ã«è¡ãããŸããã çªçµã®æŸéã¯1ã€ã®ã€ãã³ãã§ã¯ãªããããã€ãã®ã€ãã³ãã§ãããæœåšçã«ãã¹ãŠã®ã€ãã³ããã絶察ãã¹ã±ãŒã«ã§ç°ãªãæéã«çºçããå¯èœæ§ããããŸãã
æåã®æ¡ä»¶ã«éåããå ŽåããµãŒããŒãšããŒã¿ããŒã¹ã®äž¡æ¹ã§ã¿ã€ã ãŸãŒã³ãå«ãããŒã¿åã䜿çšããããšã§åé¡ã解決ã§ããŸãã 以äžã¯ãããŸããŸãªãã©ãããã©ãŒã ãšDBMSã®äŸã®å°ããªãªã¹ãã§ãã
.NET | DateTimeOffset |
Java | org.joda.time.DateTimeãjava.time.ZonedDateTime |
MS SQL | æ¥æãªãã»ãã |
Oracle PostgreSQL | ã¿ã€ã ãŸãŒã³ä»ãã¿ã€ã ã¹ã¿ã³ã |
MySQL | - |
2çªç®ã®æ¡ä»¶ã®éåã¯ãããè€éãªã±ãŒã¹ã§ãã ãã®ãçžå¯Ÿãæéãåã«è¡šç€ºããããã«ä¿åããå¿ èŠããããã€ãã³ããçºçããããŸãã¯ç¹å®ã®æé垯ã«æ¥ãã絶察ãæç¹ã決å®ããã¿ã¹ã¯ããªãå Žåã¯ãæéã®å€æãçŠæ¢ããã ãã§ååã§ãã ããšãã°ããŠãŒã¶ãŒã¯2016幎3æ25æ¥9:00ã«ãã¬ãäŒç€Ÿã®ãã¹ãŠã®æ¯åºã®è»¢éã®éå§ãå ¥åãããã®ãã©ãŒã ã§éä¿¡ãä¿åã衚瀺ãããŸãã ãã ããããçš®ã®ã¹ã±ãžã¥ãŒã©ã¯ãåéä¿¡ã®éå§ã®1æéåã«ç¹å¥ãªã¢ã¯ã·ã§ã³ãèªåçã«å®è¡ããå¿ èŠãããå ŽåããããŸãïŒéç¥ãéä¿¡ãããããã¬ãäŒç€Ÿã®ããŒã¿ããŒã¹ã®äžéšã®ããŒã¿ã®å¯çšæ§ã確èªããŸãïŒã ãã®ãããªã¹ã±ãžã¥ãŒã©ã®ä¿¡é Œã§ããå®è£ ã¯ãç°¡åãªã¿ã¹ã¯ã§ã¯ãããŸããã ãã©ã³ããŒãåãã©ã³ãã®ã¿ã€ã ãŸãŒã³ãèªèããŠãããšããŸãã ãããŠãæ¯ç€Ÿãããåœã®1ã€ã¯ããã°ããããŠããã¿ã€ã ãŸãŒã³ãå€æŽããããšã«ããŸããã ã±ãŒã¹ã¯èŠããã»ã©çããããšã§ã¯ãããŸãããä»åãšéå»2幎éã§ããã®ãããªã€ãã³ãã10å以äžã«ãŠã³ãããŸããïŒ http://www.timeanddate.com/news/time/ ïŒã ãŠãŒã¶ãŒã¯ã¿ã€ã ãŸãŒã³ãã€ã³ãã£ã³ã°ãææ°ã«ä¿ã€ããã¹ã±ãžã¥ãŒã©ããã®æ å ±ãGoogle Maps Time Zone APIãªã©ã®ã°ããŒãã«ãœãŒã¹ããèªåçã«ååŸããå¿ èŠãããããšãããããŸãã ç§ã¯ãã®ãããªå Žåã«æ®éçãªè§£æ±ºçãæäŸããããšãæ³å®ããŠããŸããããã®ãããªç¶æ³ã¯çå£ãªç 究ãå¿ èŠãšããããšã«æ³šæããŸãã
äžèšãããããããã«ã ã±ãŒã¹ã®100ïŒ ãã«ããŒããåäžã®ã¢ãããŒãã¯ãããŸãã ã ãããã£ãŠããŸããäžèšã®ç¶æ³ã®ã©ããã·ã¹ãã ã«ããããèŠä»¶ããæ確ã«ç解ããå¿ èŠããããŸãã é«ã確çã§ããã¹ãŠã¯UTCã§ã®ã¹ãã¬ãŒãžãåããæåã«ææ¡ãããã¢ãããŒãã«éå®ãããŸãã ããŠã説æãããŠããäŸå€çãªç¶æ³ã¯ããããã£ã³ã»ã«ããã®ã§ã¯ãªããç¹å¥ãªå Žåã«ä»ã®ãœãªã¥ãŒã·ã§ã³ãè¿œå ããã ãã§ãã
æéã®ãªãæ¥ä»
æ¥ä»ãšæå»ãæ£ãã衚瀺ããã¯ã©ã€ã¢ã³ãã®ã¿ã€ã ãŸãŒã³ãèæ ®ããŠèããŠã¿ãŸãããã ç§ãã¡ã¯æéã®ãªãæ¥ä»ã«ç®ãåããæåã«ãã®ã±ãŒã¹ã«ç€ºãããäŸ-ãæ°ããå¥çŽã¯2016幎2æ2æ¥ã«çºå¹ããŸããã ãã®ãããªå€ã«å¯ŸããŠãæéã䌎ããéåžžã®ãæ¥ä»ãšåãã¿ã€ããšåãã¡ã«ããºã ã䜿çšããããšã©ããªããŸããïŒ
ãã¹ãŠã®ãã©ãããã©ãŒã ãèšèªãããã³DBMSã«æ¥ä»ã®ã¿ãæ ŒçŽããåãããããã§ã¯ãããŸããã ããšãã°ã.NETã«ã¯DateTimeåã®ã¿ããããåå¥ã®ãæ¥ä»ã®ã¿ãã¯ãããŸããã ãã®ãããªãªããžã§ã¯ãã®äœææã«æ¥ä»ã®ã¿ãæå®ãããå Žåã§ããæå»ã¯ååšãã00ïŒ00ïŒ00ã§ãã å€ãFebruary 2ã2016 00:00:00ãã+2ã®ãªãã»ããã§ãã«ãããå€æãããšããFebruary 1ã2016 23:00:00ãã«ãªããŸãã äžèšã®äŸã§ã¯ãããã¯ãããæé垯ã§ã¯æ°ããå¥çŽã2æ2æ¥ã«éå§ããããã1ã€ã®æé垯ã§ã¯2æ1æ¥ã«éå§ãããããšã«çžåœããŸãã æ³ç芳ç¹ããèŠããšãããã¯ã°ãããŠããŸãããã¡ããããã§ã¯ãããŸããã ãçŽç²ãªãæ¥ä»ã®äžè¬çãªã«ãŒã«ã¯éåžžã«åçŽã§ãããã®ãããªå€ã¯ãä¿åããã³èªã¿åãã®ã©ã®æ®µéã§ãå€æããªãã§ãã ããã
æ¥ä»ã®å€æãåé¿ããæ¹æ³ã¯ããã€ããããŸãã
- ãã©ãããã©ãŒã ãæéã®ãªãæ¥ä»ãè¡šãåããµããŒãããŠããå Žåã¯ãããã䜿çšããå¿ èŠããããŸãã
- ãã®å€ã§ã¯ã¿ã€ã ãŸãŒã³ãç¡èŠããå¿ èŠãããããšãã·ãªã¢ã©ã€ã¶ãŒã«éç¥ãããªããžã§ã¯ãã®ã¡ã¿ããŒã¿ã«ç¹å¥ãªå±æ§ãè¿œå ããŸãã
- ã¯ã©ã€ã¢ã³ãããæ¥ä»ãæž¡ããæååãšããŠè¿ããæ¥ä»ãšããŠä¿åããŸãã ãã®ã¢ãããŒãã¯ãã¯ã©ã€ã¢ã³ããæ¥ä»ã衚瀺ããã ãã§ãªãããã®äžã§ããã€ãã®æäœïŒæ¯èŒãæžç®ãªã©ïŒãå®è¡ããå¿ èŠãããå Žåã«äžäŸ¿ã§ãã
- æååãšããŠè»¢éããã³ä¿åããã¯ã©ã€ã¢ã³ãã®å°åèšå®ãèæ ®ããŠããã©ãŒãããã®ã¿ã®æ¥ä»ã«å€æããŸãã åã®ãªãã·ã§ã³ãããããã«æ¬ ç¹ããããŸããããšãã°ãä¿åãããæååã®æ¥ä»ã®éšåãã幎ãæãæ¥ãã®é åºã§ãªãå Žåãæ¥ä»ç¯å²ã«ããå¹æçãªã€ã³ããã¯ã¹æ€çŽ¢ãè¡ãããšã¯ã§ããŸããã
ãã¡ãããåäŸãæããŠãå¥çŽãç· çµãããåœã§ã®ã¿æå³ãããããã®åœã¯åãã¿ã€ã ãŸãŒã³ã«ãããšèšãããšãã§ããŸãããããã£ãŠãæå¹ã«ãªãæéãæ確ã«æ±ºå®ããããšãã§ããŸãã ãã ãããã®å Žåã§ããä»ã®ã¿ã€ã ãŸãŒã³ã®ãŠãŒã¶ãŒã¯ãããŒã«ã«ã€ãã³ãã®ã©ã®æç¹ã§ãã®ã€ãã³ããçºçãããèå³ããããŸããã ãŸãããã®æç¹ã衚瀺ããå¿ èŠãããå Žåã§ããæ¥ä»ã ãã§ãªãæå»ã衚瀺ããå¿ èŠããããŸãããããã¯åææ¡ä»¶ãšççŸããŸãã
æééé
æéééã®ä¿åãšåŠçã«ããããã¹ãŠãã·ã³ãã«ã«ãªããŸãããã®å€ã¯ã¿ã€ã ãŸãŒã³ã«äŸåããªããããããã§ã¯ç¹å¥ãªæšå¥šäºé ã¯ãããŸããã ãããã¯ãæéåäœïŒå¿ èŠãªç²ŸåºŠã«å¿ããŠæŽæ°ãŸãã¯æµ®åå°æ°ç¹æ°ïŒãšããŠä¿åããã³è»¢éã§ããŸãã ç§ç²ŸåºŠãéèŠãªå Žå-äœç§ãããªç§-äœããªç§ãªã©
ãã ããééã®èšç®ã«ã¯èœãšãç©ŽããããŸãã 2ã€ã®ã€ãã³ãéã®æéééãã«ãŠã³ãããå žåçãªCïŒã³ãŒãããããšããŸãã
DateTime start = DateTime.Now; //... DateTime end = DateTime.Now; double hours = (end - start).TotalHours;
äžèŠãåé¡ã¯ãããŸããããããã§ã¯ãããŸããã ãŸãããã®ãããªã³ãŒãã®åäœãã¹ãã«åé¡ãããå¯èœæ§ããããŸãããããã«ã€ããŠã¯åŸã»ã©èª¬æããŸãã 第äºã«ãæåã®æéã¯å¬æéã§ãæåŸã®æéã¯å€æéã ãšæ³åããŠã¿ãŸãããïŒããšãã°ãããã¯åŽåæéã枬å®ããåŽåè ã¯å€å€ãæã£ãŠããŸãïŒã
2016幎ã®å€æéã3æ27æ¥ã®å€ã«çºçããã¿ã€ã ãŸãŒã³ã§ã³ãŒããæ©èœãããšä»®å®ããäžèšã®ç¶æ³ãã·ãã¥ã¬ãŒãããŸãã
DateTime start = DateTime.Parse("2016-03-26T20:00:15+02"); DateTime end = DateTime.Parse("2016-03-27T05:00:15+03"); double hours = (end - start).TotalHours;
ãã®ã³ãŒãã¯9æéã«ãªããŸãããå®éã«ã¯ãããã®æéã®éã«8æéãçµéããŠããŸãã ããã¯ã次ã®ããã«ã³ãŒããå€æŽããããšã§ç°¡åã«ç¢ºèªã§ããŸãã
DateTime start = DateTime.Parse("2016-03-26T20:00:15+02").ToUniversalTime(); DateTime end = DateTime.Parse("2016-03-27T05:00:15+03").ToUniversalTime(); double hours = (end - start).TotalHours;
ãããã£ãŠãçµè«- ã¿ã€ã ãŸãŒã³ã«é¢ããæ å ±ãä¿åããUTCå€ãŸãã¯ã¿ã€ãã®ããããã䜿çšããŠãæ¥ä»ãšæå»ã®ç®è¡æŒç®ãå®è¡ããå¿ èŠããããŸãã ãããŠãå¿ èŠã«å¿ããŠããŒã«ã«ã«æ»ããŸãã ãã®èŠ³ç¹ãããæåã®äŸã¯ãDateTime.NowãDateTime.UtcNowã«å€æŽããããšã§ç°¡åã«ä¿®æ£ã§ããŸãã
ãã®ãã¥ã¢ã³ã¹ã¯ãç¹å®ã®ãã©ãããã©ãŒã ãèšèªã«äŸåããŸããã åæ§ã®Javaã³ãŒãã«åãæ¬ ç¹ããããŸãã
LocalDateTime start = LocalDateTime.now(); //... LocalDateTime end = LocalDateTime.now(); long hours = ChronoUnit.HOURS.between(start, end);
ãŸããç°¡åã«ä¿®æ£ãããŸã-ããšãã°ãLocalDateTimeã®ä»£ããã«ZonedDateTimeã䜿çšããŸãã
ä»åŸã®ã€ãã³ããã¹ã±ãžã¥ãŒã«ãã
ã¹ã±ãžã¥ãŒã«ãããã€ãã³ãã¯ãããè€éãªç¶æ³ã§ãã æšæºã©ã€ãã©ãªã«ã¹ã±ãžã¥ãŒã«ãä¿åããããã®ãŠãããŒãµã«ã¿ã€ãã¯ãããŸããã ãããããã®ãããªåé¡ã¯ããã»ã©ãŸãã«çºçããããã§ã¯ãªããããæ¢è£œã®ãœãªã¥ãŒã·ã§ã³ãåé¡ãªãèŠã€ããããšãã§ããŸãã è¯ãäŸã¯cronã¹ã±ãžã¥ãŒã©åœ¢åŒã§ããããã¯ãQuartzïŒ http : //quartz-scheduler.org/api/2.2.0/org/quartz/CronExpression.htmlãªã©ãä»ã®ãœãªã¥ãŒã·ã§ã³ã«ãã£ãŠäœããã®åœ¢ã§äœ¿çšãããŸãã ãæã®ç¬¬2éææ¥ããªã©ã®ãªãã·ã§ã³ãå«ããã¹ã±ãžã¥ãŒãªã³ã°ã®ã»ãŒãã¹ãŠã®ããŒãºãã«ããŒããŸãã
ã»ãšãã©ã®å Žåãç¬èªã®ã¹ã±ãžã¥ãŒã©ãŒãäœæããããšã¯æå³ããããŸãããæè»æ§ã®ããæéãã¹ãæžã¿ã®ãœãªã¥ãŒã·ã§ã³ããããŸãããäœããã®çç±ã§ç¬èªã®ã¡ã«ããºã ãäœæããå¿ èŠãããå Žåãå°ãªããšãcronããã¹ã±ãžã¥ãŒã«åœ¢åŒãåçšã§ããŸãã
äžè¬çãªæšå¥šäºé
ããŸããŸãªçš®é¡ã®æéå€ã®ä¿åãšåŠçã«é¢ããäžèšã®æšå¥šäºé ã«å ããŠãä»ã«ãããã€ãèšåãããããšããããŸãã
ãŸããçŸåšã®æå»ãååŸããããã®éçã¯ã©ã¹ã¡ã³ããŒã®äœ¿çšã«ã€ããŠ-DateTime.UtcNowãZonedDateTime.nowïŒïŒãªã©ã æ¢ã«è¿°ã¹ãããã«ãã³ãŒãã§çŽæ¥äœ¿çšãããšãç¹å¥ãªã¢ãã¯ãã¬ãŒã ã¯ãŒã¯ããªããšçŸåšã®æå»ãå€æŽã§ããªããããåäœãã¹ããå€§å¹ ã«è€éã«ãªãå¯èœæ§ããããŸãã ãããã£ãŠãåäœãã¹ããäœæããå Žåã¯ããã®ãããªã¡ãœããã®å®è£ ã眮ãæããããšãã§ããããšã確èªããå¿ èŠããããŸãã ãã®åé¡ã解決ããã«ã¯ãå°ãªããšã2ã€ã®æ¹æ³ããããŸãã
- çŸåšã®æå»ãè¿ãåäžã®ã¡ãœããã§IDateTimeProviderã€ã³ã¿ãŒãã§ã€ã¹ã匷調衚瀺ããŸãã 次ã«ãçŸåšã®æå»ãååŸããå¿ èŠããããã¹ãŠã®ã³ãŒãåäœã§ããã®ã€ã³ã¿ãŒãã§ã€ã¹ã«äŸåé¢ä¿ãè¿œå ããŸãã ããã°ã©ã ã®éåžžã®å®è¡äžã«ãããã©ã«ãã®å®è£ ãããããã¹ãŠã®å Žæã«æ³šå ¥ãããå®éã®çŸåšæå»ãè¿ãããåäœãã¹ãã§ã¯ä»ã®å¿ èŠãªå®è£ ãè¿ãããŸãã ãã®æ¹æ³ã¯ããã¹ãã«é¢ããŠæãæè»æ§ããããŸãã
- ã¡ãœããã䜿çšããŠç¬èªã®éçã¯ã©ã¹ãäœæããçŸåšã®æå»ãšããã®ã¡ãœããã®å®è£ ãå€éšããèšå®ããæ©èœãååŸããŸãã ããšãã°ãCïŒã³ãŒãã®å Žåããã®ã¯ã©ã¹ã¯UtcNowããããã£ãšSetImplementationïŒFunc <DateTime> implïŒã¡ãœãããå ¬éã§ããŸãã çŸåšã®æå»ãååŸããããã«éçããããã£ãŸãã¯ã¡ãœããã䜿çšãããšãã©ãã§ãè¿œå ã®ã€ã³ã¿ãŒãã§ã€ã¹ãžã®äŸåé¢ä¿ãæ瀺çã«ç»é²ããå¿ èŠããªããªããŸãããOOPååã®èŠ³ç¹ããã¯ãããã¯çæ³çãªãœãªã¥ãŒã·ã§ã³ã§ã¯ãããŸããã ãã ããäœããã®çç±ã§åã®ãªãã·ã§ã³ãé©åã§ãªãå Žåã¯ãããã䜿çšã§ããŸãã
çŸåšã®ã¿ã€ã ãããã€ããŒã®å®è£ ã«åãæ¿ãããšãã«è§£æ±ºãã¹ãè¿œå ã®åé¡ã¯ããå€ãæ¹æ³ã§ãã ããæšæºã¯ã©ã¹ã䜿çšãç¶ããªãããã«ããããšã§ãã ãã®åé¡ã¯ãã»ãšãã©ã®ã³ãŒãå質管çã·ã¹ãã ã§ç°¡åã«è§£æ±ºã§ããŸãã èŠããã«ããããã©ã«ããã®å®è£ ã宣èšãããŠããå Žåãé€ãããã¹ãŠã®ãã¡ã€ã«ã§ãäžèŠãªãéšåæååãèŠã€ããããšã«ãªããŸãã
çŸåšã®æå»ãååŸããéã®2çªç®ã®ãã¥ã¢ã³ã¹ã¯ãã¯ã©ã€ã¢ã³ããä¿¡é Œã§ããªãããšã§ã ã ãŠãŒã¶ãŒã®ã³ã³ãã¥ãŒã¿ãŒã®çŸåšã®æå»ã¯å®éã®ã³ã³ãã¥ãŒã¿ãŒã®æå»ãšã¯å€§ããç°ãªãå¯èœæ§ããããããã«é¢é£ä»ããããããžãã¯ãããå Žåããã®éãããã¹ãŠãå°ç¡ãã«ããå¯èœæ§ããããŸãã çŸåšã®æå»ãåä¿¡ããå¿ èŠããããã¹ãŠã®å Žæã¯ãå¯èœã§ããã°ããµãŒããŒåŽã§å®è¡ããå¿ èŠããããŸãã ãŸããåè¿°ã®ããã«ãæéã䌎ããã¹ãŠã®ç®è¡æŒç®ã¯ãUTCå€ã§å®è¡ããããã¿ã€ã ãŸãŒã³ãªãã»ãããæ ŒçŽããåã䜿çšããŠå®è¡ããå¿ èŠããããŸãã
ãããŠãã1ã€èšåãããã®ã¯ãæ å ±äº€æã®ããã®æ¥ä»ãšæå»ã®åœ¢åŒãèšè¿°ããISO 8601æšæºã§ãã ç¹ã«ãæœåšçãªäºææ§ã®åé¡ãé²ãããã«ãã·ãªã¢ã«åã§äœ¿çšãããæ¥ä»ãšæå»ã®æååè¡šçŸã¯ãã®æšæºã«æºæ ããå¿ èŠããããŸãã å®éã«ã¯ãæžåŒèšå®ãèªåã§å®è£ ããããšã¯éåžžã«ãŸããªã®ã§ãæšæºèªäœã¯äž»ã«æè²ç®çã§åœ¹ç«ã¡ãŸãã