Javaでは、DateFormatクラスを使用して文字列解析(テキスト→日付)およびフォーマット(日付→テキスト)を行うことが出来ます。
※今回使用するDateFormatクラスのパッケージは、java.text.DateFormatになっています。
より複雑な文字列解析(テキスト→日付)およびフォーマット(日付→テキスト)を行いたい場合は、SimpleDateFormatを使用してください。
DateFormatクラスのフィールド値
フィールド名 | 概要 | 日付 | 時刻 |
DEFAULT | デフォルト・スタイル・パターンのための定数です。値はMEDIUMです。 | 2022/11/10 | 12:00:00 |
FULL | 全スタイル・パターンのための定数です。 | 2022年11月10日木曜日 | 12時00分00秒 日本標準時 |
LONG | 長いスタイル・パターンのための定数です。 | 2022年11月10日 | 12:00:00 JST |
MEDIUM | 長さが中位のスタイル・パターンのための定数です。 | 2022/11/10 | 12:00:00 |
SHORT | 短いスタイル・パターンのための定数です。 | 2022/11/10 | 12: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クラスで準備されているフォーマットに関しては、積極的にこちらを使用してください。
コメント