Java 文字列( String )から日付型( Date )に変換する方法 - クラス Date ホームページ制作 | 墨田区

Java 文字列( String )から日付型( Date )に変換する方法 – クラス Date

LINEで送る
Pocket

Java で文字列(String)から日付型(Date)へ変換する方法をご紹介します。
実務ではよく利用しますので、しっかり理解しておきましょう。

注: ここでの Date は、java.util.Date を指します。

まず、Java で 文字列から日付型 Date への変換は、SimpleDateFormat を利用します。

SimpleDateFormat をインスタンス化した後、setLenient メソッドと、parse メソッドを利用することで変換できます。

変換できない文字列が指定されると、例外( ParseException ) が発生しますので、注意しましょう。

今回のサンプルは、文字列日付と書式を指定して変換します。変換できない場合には null を返します。




【PR】マジか?!「アレ」してるLINEスタンプっていったい・・・


サンプルソース

/**
 * 指定されたパターン文字列の文字列を 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

日付の変換についてご理解いただけましたか?
この辺りは実務では常に求められるので、しっかり覚えておきたいですね。

おつかれさまでした。

LINEで送る
Pocket

この記事がお役に立ちましたら シェア をお願いいたします。

コメントを残す

コメント(必須)

お名前 (必須)
メールアドレス
(アドレスは公開されません)

Trackback URL