【Java入門】DateFormatクラスで日付の表示方法

入門

Javaでは、DateFormatクラスを使用して文字列解析(テキスト→日付)およびフォーマット(日付→テキスト)を行うことが出来ます。
※今回使用するDateFormatクラスのパッケージは、java.text.DateFormatになっています。

より複雑な文字列解析(テキスト→日付)およびフォーマット(日付→テキスト)を行いたい場合は、SimpleDateFormatを使用してください。

DateFormatクラスのフィールド値

フィールド名概要日付時刻
DEFAULTデフォルト・スタイル・パターンのための定数です。値はMEDIUMです。2022/11/1012:00:00
FULL全スタイル・パターンのための定数です。2022年11月10日木曜日12時00分00秒 日本標準時
LONG長いスタイル・パターンのための定数です。2022年11月10日12:00:00 JST
MEDIUM長さが中位のスタイル・パターンのための定数です。2022/11/1012:00:00
SHORT短いスタイル・パターンのための定数です。2022/11/1012:00

DateFormatクラスの主要メソッド

インスタンスの生成方法

DateFormatクラスには、newではなく下記のようなインスタンスを生成するメソッドを使用します。

メソッド名説明指定可能引数
getDateTimeInstanceフォーマット・スタイルを持つ日時フォーマッタを取得します。dateStyle, timeStyle, Locale
getDateInstanceフォーマット・スタイルを持つ日付フォーマッタを取得します。dateStyle, Locale
getTimeInstanceフォーマット・スタイルを持つ時刻フォーマッタを取得します。timeStyle, Locale
getInstance日付と時間の両方に対しSHORTスタイルを持つ日時フォーマッタを取得します。

フォーマット(日付→テキスト)

DateFormatを使用してフォーマットを行う場合は、出力したいフォーマットのインスタンスに対してformatメソッドを使用する事によって利用できます。

// インスタンス作成
DateFormat dft = DateFormat.getDateInstance();
// yyyy/MM/dd 形式の日付を取得します。
String date = dft.format(new Date());

使用例

// FULLにて、日時フォーマッタを作成
DateFormat dateTimeInstance = DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL);
// FULLにて、日付フォーマッタを作成
DateFormat dateInstance = DateFormat.getDateInstance(DateFormat.FULL, Locale.US);
// MEDIUMにて、時刻フォーマッタを作成
DateFormat timeInstance = DateFormat.getTimeInstance();
// SHORTスタイルを持つ日時フォーマッタを作成
DateFormat instance = DateFormat.getInstance();

// Dateをフォーマットして出力
System.out.println(dateTimeInstance.format(new Date()));
// Dateをフォーマットして出力
System.out.println(dateInstance.format(new Date()));
// Dateをフォーマットして出力
System.out.println(timeInstance.format(new Date()));
// Dateをフォーマットして出力
System.out.println(instance.format(new Date()));

結果

2022年11月10日木曜日 2時09分10秒 日本標準時
Thursday, November 10, 2022
2:09:10
2022/11/10 2:09

文字列解析(テキスト→日付)

DateFormatを使用してフォーマットを行う場合は、出力したいフォーマットのインスタンスに対してformatメソッドを使用する事によって利用できます。

// インスタンス作成
DateFormat dft = DateFormat.getDateInstance();
// yyyy/MM/dd 形式の日付を取得します。
Date date = dft.parse("2022/11/10");

使用例

// FULLにて、日時フォーマッタを作成
DateFormat dateTimeInstance = DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL);
// FULLにて、日付フォーマッタを作成
DateFormat dateInstance = DateFormat.getDateInstance(DateFormat.FULL, Locale.US);
// MEDIUMにて、時刻フォーマッタを作成
DateFormat timeInstance = DateFormat.getTimeInstance();
// SHORTスタイルを持つ日時フォーマッタを作成
DateFormat instance = DateFormat.getInstance();

// 文字列をDateに解析を行う
System.out.println(dateTimeInstance.parse("2022年11月10日木曜日 12時00分00秒 日本標準時"));
// 文字列をDateに解析を行う
System.out.println(dateInstance.parse("Thursday, November 10, 2022"));
// 文字列をDateに解析を行う
System.out.println(timeInstance.parse("12:00:00"));
// 文字列をDateに解析を行う
System.out.println(instance.parse("2022/11/10 12:00"));

結果

Thu Nov 10 12:00:00 JST 2022
Thu Nov 10 00:00:00 JST 2022
Thu Jan 01 12:00:00 JST 1970
Thu Nov 10 12:00:00 JST 2022

まとめ

DateFormatクラスは、各言語に対応した使用頻度が高いフォーマットが事前に準備されているため、SimpleDateFormatを使用するより気軽に使用する事ができるため、DateFormatクラスで準備されているフォーマットに関しては、積極的にこちらを使用してください。

入門
おすすめ書籍
現役エンジニアの気ままブログ

コメント

タイトルとURLをコピーしました