Date and Time APIについて調べてみた その2
【概要】
前回はDate and Time APIのオブジェクトの生成方法を
調べたので今回は各フィールドの取得方法を調べてみました。
【getXXX】
過去のバージョンではCalendar#getメソッドを
使って各フィールドの値を取得していましたが、
Date and Time APIではフィールドごとにメソッドが用意されています。
[サンプルコード]
public static void sampleGetHoge() { final LocalDateTime now = LocalDateTime.now(); System.out.println("Year : " + now.getYear()); System.out.println("Month : " + now.getMonth()); System.out.println("MonthValue : " + now.getMonthValue()); System.out.println("DayOfMonth : " + now.getDayOfMonth()); System.out.println("DayOfWeek : " + now.getDayOfWeek()); System.out.println("DayOfYear : " + now.getDayOfYear()); System.out.println("Hour : " + now.getHour()); System.out.println("Minute : " + now.getMinute()); System.out.println("Second : " + now.getSecond()); System.out.println("Nano : " + now.getNano()); }
メソッド名のとおりのフィールドが取得できます。
getMonthメソッドはMonthオブジェクトが返却され、
getDayOfWeekメソッドはDayOfWeekオブジェクトが返却されます。
[実行結果]
Year : 2014 Month : JUNE MonthValue : 6 DayOfMonth : 8 DayOfWeek : SUNDAY DayOfYear : 159 Hour : 14 Minute : 42 Second : 50 Nano : 601000000
【getメソッド】
基本的な項目はgetXXX系のメソッドで取得できますが、
その他の項目についてはgetメソッドを使います。
getメソッドはCalendar#getと同じ様なメソッドです。
[サンプルコード]
public static void sampleGet() { final LocalDateTime now = LocalDateTime.now(); System.out.println("Get(YEAR) : " + now.get(ChronoField.YEAR)); System.out.println("Get(MONTH_OF_YEAR) : " + now.get(ChronoField.MONTH_OF_YEAR)); System.out.println("Get(DAY_OF_MONTH) : " + now.get(ChronoField.DAY_OF_MONTH)); System.out.println("Get(MILLI_OF_DAY) : " + now.getLong(ChronoField.MILLI_OF_DAY)); System.out.println("Get(NANO_OF_DAY) : " + now.getLong(ChronoField.MICRO_OF_DAY)); System.out.println("Get(NANO_OF_DAY) : " + now.getLong(ChronoField.NANO_OF_DAY)); }
getメソッドのパラメータの型はTemporalFieldインターフェイスのオブジェクトです。
インターフェイスなので独自のものを作成することが出来ますが、
汎用的なフィールドはChronoFieldクラスに定義されています。
サンプルでは年月日と一日内のミリ秒・マイクロ秒・ナノ秒を取得しています。
【まとめ】
よく使うフィールドについてはgetXXXメソッドで
直接呼べるようになったので
少しはIDEの補完がされやすくなったのかなと思います。
getメソッドも取得できる項目が増えているものの
使用頻度が高いわけでもないと思うので、
恩恵はあまりないかもしれません。