java8のLocalDateとLocalTimeを触ってみた
Java8から導入された機能
日付制御ではDateやCalendarなどを使用していたがSE8より導入された
サンプルコード
Main.java
import java.time.*; public class Main { public static void main(String[] args) { System.out.println("Hello World!"); // 現在日付 LocalDate ld = LocalDate.now(); System.out.println(ld); // 日付を指定 LocalDate ld2 = LocalDate.of(2011, 04, 28); System.out.println(ld2); // 文字列をパースして日付を設定 LocalDate ld3 = LocalDate.parse("2014-06-23"); System.out.println(ld3); // 現在年の1月1日 LocalDate ld4 = LocalDate.now() .withMonth(1) .withDayOfMonth(1); System.out.println(ld4); // 前月の末日 LocalDate ld5 = LocalDate.now() .withDayOfMonth(1) .minusDays(1); System.out.println(ld5); // 翌日の月初 LocalDate ld6 = LocalDate.now() .plusMonths(1) .withDayOfMonth(1); System.out.println(ld6); // 現在日時 LocalTime lt = LocalTime.now(); System.out.println(lt); // 時刻を指定 LocalTime lt2 = LocalTime.of(10, 34, 45); System.out.println(lt2); // 文字列をパースして時刻を設定 LocalTime lt3 = LocalTime.parse("23:44:12"); System.out.println(lt3); // 現在日時の0分0秒 LocalTime lt4 = LocalTime.now() .withMinute(0) .withSecond(0) .withNano(0); System.out.println(lt4); // 現在時刻の10時間語 LocalTime lt5 = LocalTime.now() .plusHours(10); System.out.println(lt5); // 現在時刻の7200秒前 LocalTime lt6 = LocalTime.now() .minusSeconds(7200); System.out.println(lt6); // 現在日時 LocalDateTime ldt1 = LocalDateTime.now(); System.out.println(ldt1); // 日時を指定 LocalDateTime ldt2 = LocalDateTime.of(2012, 10, 30, 03, 50, 12); System.out.println(ldt2); // 文字列で日時を設定 LocalDateTime ldt3 = LocalDateTime.parse("2013-10-12T16:04:23"); System.out.println(ldt3); // 現在年の1月1日0時0分 LocalDateTime ldt4 = LocalDateTime.now() .withMonth(1) .withDayOfMonth(1) .withHour(0) .withMinute(0) .withSecond(0) .withNano(0); System.out.println(ldt4); // 前年 LocalDateTime ldt5 = LocalDateTime.now() .withMonth(1) .withDayOfMonth(1) .withHour(0) .withMinute(0) .withSecond(0) .withNano(0) .minusNanos(1); System.out.println(ldt5); } }
↓
Hello World! 2016-09-24 2011-04-28 2014-06-23 2016-01-01 2016-08-31 2016-10-01 15:22:37.758 10:34:45 23:44:12 15:00 01:22:37.758 13:22:37.758 2016-09-24T15:22:37.758 2012-10-30T03:50:12 2013-10-12T16:04:23 2016-01-01T00:00 2015-12-31T23:59:59.999999999
所感
イミュータブルにしたのでメソッドチェインできるのでちょっとどの変数にどの結果が入っているかが
わかりやすくなった。
単純な日時の制御なら楽にできると思われる
時差などを制御するものもあるのでそれも近いうちちょっと触ってみる