æå»
ããã§ã¯æ¬¡ã«é²ã¿ãŸããããdate ã®æ¬¡ã®ãšã³ãã£ãã£ã¯æå»ã§ããã
LocalTimeã¯ã©ã¹ã§è¡šãããŸããå
žåçãªäŸã¯ãåºèã®å¶æ¥æéãè¡šããããšãã° 7:00 ãã 23:00 ãŸã§ã§ãããã®æéã«å
šåœã®åºèãéåºããŸãããå®éã®æéã¯ã¿ã€ã ãŸãŒã³ã«ãã£ãŠç°ãªããŸãã
LocalTime ã¯ãé¢é£ä»ããããæ¥ä»ãã¿ã€ã ãŸãŒã³ãæãããæå»ã®ã¿ãæ ŒçŽããå€ã¯ã©ã¹ã§ããæéãå ç®ãŸãã¯æžç®ãããšãåå 0 æã«åãåãããŸããã€ãŸãã20:00 ãã©ã¹ 6 æé㯠2:00 ã§ãã
LocalTimeã®äœ¿çšã¯
LocalDateãšäŒŒãŠããŸãã 修食åã¯
LocalTimeLocalTime time = LocalTime.of(20, 30); int hour = date.getHour(); // 20 int minute = date.getMinute(); // 30 time = time.withSecond(6); // 20:30:06 time = time.plusMinutes(3); // 20:33:06
ã§äœ¿çšã§ããŸãããæéã®æäœã¯éåžžã修食åãå¿
èŠã«ãªãã»ã©è€éã§ã¯ãããŸããã
æ¥ä»ãšæå»ãçµã¿åããã
次ã«èŠãã¯ã©ã¹ã¯
LocalDateTimeã§ãã
ãã®å€ã¯ã©ã¹ã¯LocalDateãš
LocalTimeã®çµã¿åããã§ããã¿ã€ã ãŸãŒã³ãªãã§ãæ¥ä»ãšæå»ã®äž¡æ¹ãè¡šããŸãã
LocalDateTime ã¯ãçŽæ¥äœæããããšããæ¥ä»ãšæå»ãçµã¿åãããŠäœæããããšãã§ããŸãã3
LocalDateTime dt1 = LocalDateTime.of(2014, Month.JUNE, 10, 20, 30); LocalDateTime dt2 = LocalDateTime.of(date, time); LocalDateTime dt3 = date.atTime(20, 30); LocalDateTime dt4 = date.atTime(time);
çªç®ãš 4 çªç®ã®ãªãã·ã§ã³ã§ã¯ãæ¥ä»ãšæå»ãæè»ã«çµã¿åããã
atTime()ã¡ãœããã䜿çšããŸããã»ãšãã©ã®æ¥ä»ãšæå»ã®ã·ã¹ãã ã¯ã©ã¹ã«ã¯ããªããžã§ã¯ããå¥ã®ãªããžã§ã¯ããšçµã¿åãããŠããè€éãªãªããžã§ã¯ããäœæãããšãã«äœ¿çšã§ãããatãã¡ãœããããããŸãã
LocalDateTimeã¯ã©ã¹ã®ä»ã®ã¡ãœããã¯ã
LocalDateããã³
LocalTimeã®ã¡ãœãããšåæ§ã§ãã
åæ§ã®ã¡ãœããåœåãã¿ãŒã³ã«ããã APIã®åŠç¿ã容æã«ãªããŸãã次ã®è¡šã«ã¯ãé¢é£ãããã¹ãŠã®ã¡ãœãã ãã¬ãã£ãã¯ã¹ããªã¹ããããŠããŸãã
ã€ã³ã¹ã¿ã³ã
æ¥ä»ãšæå»ãæ±ããšããç§ãã¡ã¯éåžžã幎ãæãæ¥ãæãåãç§ãæ±ããŸããããããããã¯ã人éããšåŒã¹ãæéã®ã¢ãã«ã®äžã€ã«ãããŸãããäžè¬çã«äœ¿çšããã 2 çªç®ã®ã¢ãã«ã¯ãããã·ã³ããŸãã¯ãé£ç¶ãæéã§ãããã®ã¢ãã«ã§ã¯ãæé軞äžã®ç¹ã¯ 1 ã€ã®å€§ããªæ°åã§è¡šãããŸãã
ãã®ã¢ãããŒãã¯èšç®ã¢ã«ãŽãªãºã ãç°¡çŽ åãã Unixãªãã¬ãŒãã£ã³ã° ã·ã¹ãã ã§æå»ãä¿åããããã«äœ¿çšãããŸããæå»ã¯ 1970 幎 1 æ 1 æ¥ããçµéããç§æ°ã§è¡šãããŸããåæ§ã«ã
Javaã§ã¯ãæé㯠1970 幎 1 æ 1 æ¥ããçµéããããªç§æ°ãšããŠä¿åãããŸãã
java.time APIã§ã®æéèšç®ã«å¯Ÿããæ©æ¢°çãªã¢ãããŒãã¯ã
Instant value ã¯ã©ã¹ã«ãã£ãŠæäŸãããŸããããã«ãããã¿ã€ã ãŸãŒã³ãªã©ã®ä»éæ
å ±ããã¹ãŠæããã«ãæé軞äžã®ç¹ãè¡šãããšãã§ããŸããå®éããã®ã¯ã©ã¹ã«ã¯ã1970 幎 1 æ 1 æ¥ã®åå 0 æããçµéããããç§æ°ãå«ãŸããŠããŸãã
Instant start = Instant.now(); // пÑПОзвеЎеЌ вÑÑОÑÐ»ÐµÐœÐžÑ Instant end = Instant.now(); assert end.isAfter(start); //ЌаÑОМа вÑеЌеМО Ме ÑÑабПÑала
éåžžã
Instantã¯ã©ã¹ã¯ãã€ãã³ãããã€çºçããããä¿åããå¿
èŠãããããã€ãã³ããçºçããã¿ã€ã ãŸãŒã³ã¯æ°ã«ããªãå Žåã«ãæç¹ãä¿åããã³æ¯èŒããããã«äœ¿çšãããŸãã
ã»ãšãã©ã®å Žåã Instantã¯ã©ã¹ã§äœãã§ãããããããInstant ã¯ã©ã¹ã§äœãã§ããªããã®æ¹ã«èå³ããããŸããããšãã°ã次ã®ã³ãŒãè¡ã¯äŸå€ãã¹ããŒããŸãã
ã€ã³ã¹ã¿ã³ããªããžã§ã¯ãã¯ããç§æ°ãæ ŒçŽããã ãã§ã人éã«ãšã£ãŠããæçšãªæéåäœãåŠçããæ©èœãæäŸããªãããã
instant.get(ChronoField.MONTH_OF_YEAR); instant.plus(6, ChronoUnit.YEARS);
äŸå€ãçºçããŸããä»ã®æž¬å®åäœã䜿çšããã«ã¯ãå°ãªããšãã¿ã€ã ãŸãŒã³ãæå®ããå¿
èŠããããŸãã
æé垯
ã¿ã€ã ãŸãŒã³ã®åçã¯ãééã®çºæãšä»ã®éä¿¡æ段ã®æ¹è¯ã«ããã人ã
ã倪éœæéã®å·®ãé¡èã«ãªãã»ã©ã®è·é¢ã移åã§ããããã«ãªã£ããšãã«ã€ã®ãªã¹ã§çºå±ããŸããããã®æ代ãŸã§ãåæãéœåžã¯ç¬èªã®æéã«åŸã£ãŠç掻ããŠããããã®æéã¯æ¥æèšã«ãã£ãŠæž¬å®ãããããšãã»ãšãã©ã§ããããã®åçã¯ããããåŒãèµ·ãããå°é£ã®äžäŸã瀺ããŠããŸããæèšã®èµ€ãéã¯ã°ãªãããžæéã瀺ããé»ãé㯠10 åç°ãªãçŸå°æéã瀺ããŠããŸããã¿ã€ã ãŸãŒã³ ã·ã¹ãã ãéçºãããçŸå°ã®å€ªéœæã«çœ®ãæããããŸãã
ãããããéèŠãªäºå®ã¯ãã¿ã€ã ãŸãŒã³ã¯æ¿æ²»å®¶ã«ãã£ãŠäœæãããå°åã«å¯Ÿããæ¿æ²»çæ¯é
ã瀺ãããã«ãã䜿çšããããšããããšã§ããä»ã®ããªã·ãŒãšåæ§ãã¿ã€ã ãŸãŒã³ã«é¢é£ããã«ãŒã«ã¯è«çã«åããããšããããããŸãããŸãããããã®ã«ãŒã«ã¯å€æŽãããå¯èœæ§ããããèŠåãªãã«å€æŽãããããšããããããŸãã
ã¿ã€ã ãŸãŒã³ ã«ãŒã«ã¯ã IANAã¿ã€ã ãŸãŒã³ ããŒã¿ããŒã¹ãçºè¡ããåœéã°ã«ãŒãã«ãã£ãŠç·šéãããŠããŸããããã«ã¯ãå°çã®åå°åã®èå¥åãšããã®å°åã®ã¿ã€ã ãŸãŒã³å€æŽã®å±¥æŽãå«ãŸããŠããŸããèå¥åã¯ã
ãEurope/LondonããŸãã¯
ãAmerica/New_Yorkãã®ããã«ãªããŸãã
java.time APIããªãªãŒã¹ãããåã¯ãã¿ã€ã ãŸãŒã³ãè¡šãããã«
TimeZoneã¯ã©ã¹ã䜿çšãããŠããŸããã
çŸåšã¯ä»£ããã«ZoneId ã䜿çšãããŸãããããã®éã«ã¯ 2 ã€ã®éèŠãªéãããããŸãããŸãã
ZoneId ã¯äžå€ã§ããããããã®ã¯ã©ã¹ã®ãªããžã§ã¯ããéçå€æ°ãªã©ã«æ ŒçŽã§ããããã«ãªããŸãã次ã«ãã«ãŒã«èªäœã¯
ZoneIdèªäœã§ã¯ãªãã
ZoneRulesã¯ã©ã¹ã«ä¿åãããŸããã«ãŒã«ãååŸããã«ã¯ã
ZoneIdã¯ã©ã¹ ãªããžã§ã¯ãã®
getRules()ã¡ãœãããåŒã³åºãå¿
èŠããããŸãã
ãã¹ãŠã®ã¿ã€ã ãŸãŒã³ã«å
±éããç¹åŸŽã¯ã UTC/ã°ãªãããžããã®åºå®ãªãã»ããã§ããæããã䜿ãããã®ã¯ãããã¥ãŒãšãŒã¯ã¯ãã³ãã³ãã 5 æéé
ããŠããããªã©ãããŸããŸãªéœåžéã®æå·®ã«ã€ããŠè©±ããšãã«ããã䜿çšããããšã§ãã
ZoneOffsetã¯ã©ã¹ã¯
ZoneIdã®åå«ã§ããããã³ãã³ã®ã°ãªãããžãééããæ¬åååç·ãšã®æå·®ãè¡šããŸããéçºè
ã®èŠ³ç¹ãããããšãã¿ã€ã ãŸãŒã³ãšãã®è€éãã«å¯ŸåŠããå¿
èŠããªããªãã®ã¯çŽ æŽãããããšã§ãã
java.time API ã䜿çšãããšãå¯èœãªéããããè¡ãããšãã§ããŸããå¯èœãªéãã
LocalDateãLocalTimeãLocalDateTimeãããã³
Instantã¯ã©ã¹ã䜿çšããŠãã ãããã¿ã€ã ãŸãŒã³ãªãã§ã¯ã§ããªãå Žåã¯ã
ZonedDateTimeã¯ã©ã¹ã䜿çšããŸãã
ZonedDateTimeã¯ã©ã¹
æ¥ä»ãšæå»ããã«ã¬ã³ããŒãæèšã§èŠããã人éã®æž¬å®åäœããæ©æ¢°åäœã«å€æã§ããŸãããã®çµæã
Localã¯ã©ã¹ãŸãã¯
Instant ã¯ã©ã¹ãã
ZonedTimeDateãäœæã§ããŸãã ã¿ã€ã ãŸãŒã³ã®æãäžå¿«ãªæ©èœã® 1 ã€ã¯ãããããå€æéã§ããå€æéã®ã°ãªãããžãšã®åãæ¿ãã«äŒŽããã°ãªãããžãšã®ã¿ã€ã ãŸãŒã³ã®å·®ã¯å¹Žã« 2 å (ãŸãã¯ãã以äž) å€åããéåžžã¯æ¥ã«å¢å ããç§ã«æžå°ããŸãããããªããšã家äžã®æèšããã¹ãŠäº€æããªããã°ãªããŸããã
java.timeã¯ã©ã¹ã§ã¯ããªãã»ãã ããŒã¿ã¯
ããªãã»ããå€æããšããŠè¡šãããŸããæ¥ã«ã¯ãããã«ããæéã®ãã®ã£ããããçºçããäžéšã®æéå€ãäžå¯èœã«ãªããç§ã«ã¯éã«ãäžéšã®æéå€ã 2 åçºçããŸãããããã¯ãã¹ãŠã
ZonedDateTimeã¯ã©ã¹ã®ãã¡ã¯ã㪠ã¡ãœãããšã³ã³ããŒã¿ ã¡ãœãããéããŠãµããŒããããŠããŸããããšãã°ã1 æ¥ãè¿œå ãããšè«çæ¥ãè¿œå ãããå€æéã«åãæ¿ãããæ»ããããããšã24 æéããå€ããŠãå°ãªããŠãè¡šãããšãã§ããŸãã
åæ§ã«ã atStartOfDay()ã¡ãœããã¯ã1 æ¥ãçå€äžã«å§ãŸãããšãä¿èšŒã§ããªãããããã®ååãä»ããããŠããŸããå€æéã«åãæ¿ãããšãã¯ãæå·®ãèæ
®ããå¿
èŠããããŸãããããŠæåŸã«å€æéã«é¢ãããã³ãã 1 ã€ãå€ããå¬ãžã®ç§»è¡æã®æéã®éè€ (åãæéå€ã 2 å衚瀺ãããå Žå) ãèæ
®ããŠããããšã蚌æãããå Žåã¯ããã®ãããªç¶æ³çšã«èšèšããã 2 ã€ã®ç¹å¥ãªã¡ãœããã®ããããã䜿çšã§ããŸãã ãããã®ã¡ãœããã¯ãæ©ãæ¹ãŸãã¯é
ãæ¹ã®æå»ãè¿ããŸãã value ãå€æéããå¬æéãžã®ç§»è¡äžã«ãªããžã§ã¯ãããªãŒããŒã©ããã«å·»ã蟌ãŸããå Žåãä»ã®ãã¹ãŠã®ç¶æ³ã§ã¯ãæ»ãå€ã¯åãã«ãªããŸãã
ZoneId zone = ZoneId.of("Europe/Paris"); LocalDate date = LocalDate.of(2014, Month.JUNE, 10); ZonedDateTime zdt1 = date.atStartOfDay(zone); Instant instant = Instant.now(); ZonedDateTime zdt2 = instant.atZone(zone);
zdt = zdt.withEarlierOffsetAtOverlap(); zdt = zdt.withLaterOffsetAtOverlap();
æééé
åã«èª¬æãããã¹ãŠã®ã¯ã©ã¹ã¯ãã¿ã€ã ã©ã€ã³äžã®ãã€ã³ããšããŠæ©èœããŸããæéééãè¡šãã«ã¯ã2 ã€ã®è¿œå ã®å€ã¯ã©ã¹ãå¿
èŠã§ãã
Durationã¯ã©ã¹ã¯ãç§ãšããç§ã§æž¬å®ãããæéã®é·ããè¡šããŸããäŸïŒã23.6ç§ã
Periodã¯ã©ã¹ã¯ã幎ãæãæ¥ã§æž¬å®ãããæéãè¡šããŸããäŸ: ã3 幎 2 ãæãš 6 æ¥ããããã®ééã¯ãæ¥ä»ãŸãã¯æå»ã«å ç®ãŸãã¯æžç®ã§ããŸãã
Period sixMonths = Period.ofMonths(6); LocalDate date = LocalDate.now(); LocalDate future = date.plus(sixMonths);
ãã©ãŒããããšè§£æ
ããã±ãŒãžå
šäœã¯ãæ¥ä»ãšæå» (
java.time.format )ããã©ãŒãããããŠè¡šç€ºããããã«èšèšãããŠããŸããããã±ãŒãžã¯ã
DateTimeFormatterã¯ã©ã¹ãšãã®
DateTimeFormatterBuilderãã¡ã¯ããªãäžå¿ã«å±éããŸãããã©ãŒããã¿ãäœæããæãäžè¬çãªæ¹æ³ã¯ã次ã®ãããª
DateTimeFormatterã®éçã¡ãœãããšå®æ°ã䜿çšããæ¹æ³ã§ãã
- ISO_LOCAL_DATE ãªã©ãISO ã«èšè¿°ãããŠããäžè¬çãªåœ¢åŒã®å®æ°ã
- ofPattern("dd/MM/uuuu") ãªã©ãæåã«ãã£ãŠèå¥ããããã¿ãŒã³ã
- ofLocalizedDate(FormatStyle.MEDIUM) ãªã©ã®ããŒã«ã©ã€ãºãããã¹ã¿ã€ã«ã
ãã©ãŒããã¿ãäœæããããéåžžã¯ãããé©åãªæ¥ä»ã¯ã©ã¹ ã¡ãœããã«æž¡ããŠäœ¿çšããŸãã
DateTimeFormatter f = DateTimeFormatter.ofPattern("dd/MM/uuuu"); LocalDate date = LocalDate.parse("24/06/2014", f); String str = date.format(f);
ããã«ãããæ¥ä»åºåã®æžåŒèšå®ãæ
åœããã³ãŒããå¥ã®ã¯ã©ã¹ã«åé¢ãããŸããæ¥ä»ãã©ãŒãããã®ãã±ãŒã«ãåå¥ã«æå®ããå¿
èŠãããå Žåã¯ã
withLocale(Locale)ãã©ãŒããã¿ ã¡ãœããã䜿çšããŸããã«ã¬ã³ããŒãã¿ã€ã ãŸãŒã³ãå°æ°ã®å
¥åºåãæ
åœããã¯ã©ã¹ã«ãåæ§ã®ã¡ãœããããããŸããããã«åŸ®èª¿æŽãªãã·ã§ã³ãå¿
èŠãªå Žåã¯ã
DateTimeFormatterBuilderã¯ã©ã¹ã®ããã¥ã¡ã³ããåç
§ããŠãã ãããããã«ãããè€éãªãã©ãŒããã¿ã段éçã«äœæã§ããŸãããŸãã倧æåãšå°æåãåºå¥ããªãããã¹ã解æãèšå®ããããäžéšã®è§£æãšã©ãŒãç¡èŠãããããªãã»ããããªãã·ã§ã³ã®èŠçŽ ãèšå®ãããããããšãã§ããŸãã
çµè«
java.time API ã¯ã
Java SE 8ã§æ¥ä»ãšæå»ãæäœããããã®æ°ããå
æ¬çãªã¢ãã«ã§ãã
Joda-Timeã®ã¢ã€ãã¢ãšå®è£
ã次ã®ã¬ãã«ã«åŒãäžããæçµçã«éçºè
ã
java.util.Dateãš
Calendarã®äœ¿çšãåé¿ã§ããããã«ããŸããæ¥ä»ãšæå»ã®æäœã楜ãããªããŸããã
åè
GO TO FULL VERSION