Java 文字列( String )から日付型( Date )に変換する方法 - クラス Date
Javaで文字列(String)から日付型(Date)へ変換する方法です。
実務ではよく利用しますので、しっかり理解しておきましょう。
ここでの Date
は、java.util.Date
を指します。
簡単に説明すると、Java で 文字列から日付型 Date
への変換はSimpleDateFormat
を利用します。SimpleDateFormat
をインスタンス化した後、setLenient
メソッドとparse
メソッドを利用することで変換できます。
変換できない文字列が指定されると 例外( ParseException ) が発生しますので注意しましょう。
ここでは Javaで文字列(String)から日付型(Date)へ変換する方法をサンプルソースで解説 します。
Sponsored Links
サンプルソース
今回のサンプルでは、文字列日付と書式を指定して変換します。変換できない場合には 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"); }
Sponsored Links
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 行目:日付文字列が正常なので 日付型 が返ります。
Sponsored Links
結果を確認する
結果は、以下の通りです。
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)へ変換する方法をサンプルソースで解説しました。
日付の変換についてご理解いただけましたか。この辺りは実務では常に求められるので、しっかり覚えておきたいですね。
おつかれさまでした。
Sponsored Links