今回はJava8以降のLocalDateTimeを使った日時の計算を解説します。
現場でよく使われているJava7までのDateやCalendarの解説は以下です。
CalendarとDateの変換はこちら。
文字列とDateの変換はこちら。
Calendarでの日時の計算はこちら。
LocalDateTimeクラスでの日時の計算
Java8では日時の取り扱いにはLocalDateTimeクラスで行います。
今回はその中でも日付の加算や減算を説明します。
LocalDateTimeではイミュータブルになったので加算や減算を行う際は新しいオブジェクトとして返されます。
LocalDateTimeクラスでの日時の加算
LocalDateTimeの加算ではplusYearsやplusMinutesのメソッドの引数に数字を渡してやると加算された値が返ってきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
LocalDateTime ldt = LocalDateTime.of(2018, 3, 26, 13, 0, 0); LocalDateTime ldtYear = ldt.plusYears(1); LocalDateTime ldtMonth = ldt.plusMonths(1); LocalDateTime ldtDay = ldt.plusDays(1); LocalDateTime ldtHour = ldt.plusHours(1); LocalDateTime ldtMinute = ldt.plusMinutes(1); LocalDateTime ldtSecond = ldt.plusSeconds(1); System.out.println(ldtYear); System.out.println(ldtMonth); System.out.println(ldtDay); System.out.println(ldtHour); System.out.println(ldtMinute); System.out.println(ldtSecond); System.out.println(ldt); -> 2019-03-26T13:00 2018-04-26T13:00 2018-03-27T13:00 2018-03-26T14:00 2018-03-26T13:01 2018-03-26T13:00:01 2018-03-26T13:00 |
LocalDateTimeクラスでの日時の減算
加算と同様にして、minusYearsなどの引数に渡してやると減算された値が返ってきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
LocalDateTime ldt = LocalDateTime.of(2018, 3, 26, 13, 0, 0); LocalDateTime ldtYear = ldt.minusYears(1); LocalDateTime ldtMonth = ldt.minusMonths(1); LocalDateTime ldtDay = ldt.minusDays(1); LocalDateTime ldtHour = ldt.minusHours(1); LocalDateTime ldtMinute = ldt.minusMinutes(1); LocalDateTime ldtSecond = ldt.minusSeconds(1); System.out.println(ldtYear); System.out.println(ldtMonth); System.out.println(ldtDay); System.out.println(ldtHour); System.out.println(ldtMinute); System.out.println(ldtSecond); System.out.println(ldt); -> 2017-03-26T13:00 2018-02-26T13:00 2018-03-25T13:00 2018-03-26T12:00 2018-03-26T12:59 2018-03-26T12:59:59 2018-03-26T13:00 |