Java 文字列( String )から日付型( Date )に変換する方法 - クラス Date
Javaで文字列(String)から日付型(Date)へ変換する方法です。
実務ではよく利用しますので、しっかり理解しておきましょう。
ここでの Date
は、java.util.Date
を指します。
簡単に説明すると、Java で 文字列から日付型 Date
への変換はSimpleDateFormat
を利用します。SimpleDateFormat
をインスタンス化した後、setLenient
メソッドとparse
メソッドを利用することで変換できます。
変換できない文字列が指定されると 例外( ParseException ) が発生しますので注意しましょう。
ここでは Javaで文字列(String)から日付型(Date)へ変換する方法をサンプルソースで解説 します。
サンプルソース
今回のサンプルでは、文字列日付と書式を指定して変換します。変換できない場合には null
を返します。
/**
* 指定されたパターン文字列の文字列を Date オブジェクトにして返します。
* Date オブジェクトとして有効でない場合は null を返します。
*
* @param value 日付を表す文字列
* @param format 日付を表す文字列のパターン書式 (yyyy/MM/dd など)
* @return 日付を表す文字列の Date オブジェクト
*/
public static Date toDate(String value, String format) {
if ( value == null || value == "" )
return null;
if ( format == null || format == "" )
format = "yyyy/MM/dd";
// 日付フォーマットを作成
SimpleDateFormat dateFormat = new SimpleDateFormat(format);
// 日付の厳密チェックを指定
dateFormat.setLenient(false);
try {
// 日付値を返す
return dateFormat.parse(value);
} catch ( ParseException e ) {
// 日付値なしを返す
return null;
} finally {
dateFormat = null;
}
}
/**
* 指定されたパターン文字列の文字列を Date オブジェクトにして返します。
* Date オブジェクトとして有効でない場合は null を返します。
*
* @param value 日付を表す文字列
* @return 日付を表す文字列の Date オブジェクト
*/
public static Date toDate(String value) {
return toDate(value , "yyyy/MM/dd");
}
toDateメソッドを用意
今回は、DateUtils
というクラスを作り、static
メソッドとして用意しています。
内部では、dateFormat.parse
を実行していますが、ParseException が発生した場合は、デフォルト値を返すようにしてあります。このようなメソッドを用意しておくことで、ビジネスロジック内に余計な try {} catch {}
を書く必要がなく、ソースを美しく保つことができますので、ぜひ活用ください。
それでは、テストを実施してみましょう。
テスト
以下のようなテストソースを用意しました。
System.out.println(DateUtils.toDate("", ""));
System.out.println(DateUtils.toDate(null, null));
System.out.println(DateUtils.toDate("2013/12/17", "yyyy/MM/dd"));
System.out.println(DateUtils.toDate("2013/12", "yyyy/MM/dd"));
System.out.println(DateUtils.toDate("20131217", "yyyy/MM/dd"));
System.out.println(DateUtils.toDate("20131217", "yyyyMMdd"));
System.out.println(DateUtils.toDate("XYZ", "yyyy/MM/dd"));
System.out.println(DateUtils.toDate("2013/12/17"));
- 1 行目:日付文字列・日付書式共に空文字列ですので
null
が返ります。 - 2 行目:日付文字列・日付書式共に null ですので
null
が返ります。 - 3 行目:日付文字列・日付書式共に正常な値ですので、日付型が返ります。
- 4 行目:日付文字列が正常でないので
null
が返ります。 - 5 行目:日付文字列に対して、日付書式が正常でないので
null
が返ります。 - 6 行目:日付文字列・日付書式共に正常な値ですので、日付型が返ります。
- 7 行目:日付文字列が正常でないので
null
が返ります。 - 8 行目:日付文字列が正常なので 日付型 が返ります。
結果を確認する
結果は、以下の通りです。
null
null
Tue Dec 17 00:00:00 JST 2013
null
null
Tue Dec 17 00:00:00 JST 2013
null
Tue Dec 17 00:00:00 JST 2013
まとめ
Javaで文字列(String)から日付型(Date)へ変換する方法をサンプルソースで解説しました。
日付の変換についてご理解いただけましたか。この辺りは実務では常に求められるので、しっかり覚えておきたいですね。
おつかれさまでした。