Date and Time APIについて調べてみた その4

【前提条件】

[環境]
[参考資料]

Java8 APIドキュメント
http://docs.oracle.com/javase/jp/8/api/

【概要】

今回は日時のフォーマットについて調べてみました。

Dateクラスに対応するSimpleDateFormatクラスがあるように
Date and Time APIでもフォーマット用のクラスがあります。

【フォーマット】

Date and Time APIでフォーマットに関するクラスは
DateTimeFormatterクラスを使います。

[サンプルコード]
    public static void formatSample() {

        final LocalDateTime now = LocalDateTime.now();

        System.out.println(now.toString());
        System.out.println(now.format(DateTimeFormatter.ofPattern("yyyy/MM/dd hh:mm:ss.nnnnnnnnn")));
        System.out.println(now.format(DateTimeFormatter.ofPattern("QQQQ MM月")));
        System.out.println(now.format(DateTimeFormatter.BASIC_ISO_DATE));
   }

フォーマットを行うメソッドは日付オブジェクトのクラスに定義されています。

フォーマットの指定にDateTimeFormatterクラスを使います。
DateTimeFormatter#ofPatternメソッドに
フォーマットしたい日付形式を指定します。

また、DateTimeFormatterクラスの定数には
ISOの日付形式などが設定されています。

[実行結果]
2014-06-15T12:59:38.595
2014/06/15 12:59:38.595000000
第2四半期 06月
20140615

それぞれ現在の時刻がフォーマットされています。

今まで使っていた「yyyy/MM/dd hh:mm:ss」は変わらず使用できます。
そこが変わってしまうと困りますが・・・
ミリ秒はナノ秒になっています。

SimpleDateFormatクラスからいくつかパターン文字が追加されています。
サンプルではクウォーターを出力しています。

【まとめ】

SimpleDateFormatクラスに代わる
DateTimeFormatterクラスを調べてみました。

基本的な機能はかわっていないので、
単純に使うクラスを変えるだけで使えます。

フォーマットが各日付クラスのメソッドを使うようになっています。
Date and Time APIではLocalTimeやLocalDateなどの日付クラスは
継承関係にはないため一つのクラスでは処理できないので、
各日付クラスにformatメソッドが用意されたのかなと思います。