ビジネスチャット、ビデオ通話、文書管理、スケジュールを統合。IP Messenger 互換。基本無料!

Java 日付文字列をDate型へ変換

Java 日付文字列java.util.Date 型で取得

Java で日付文字列 (フォーマット yyyy/MM/dd ) を java.util.Date 型へ変換するサンプルプログラムです。

 お勧めフリーソフト

当サイトで公開している Chat&Messenger は 10年以上の実績がある基本無料の国産ビジネスチャットツールです。ユーザを自動認識して直ぐにチャット、テレビ会議、スケジュール管理などが無料で利用できます。(Windows / Mac / Android / iOS)

サンプルプログラム

/**
 * 日付文字列"yyyy/MM/dd"をjava.util.Date型へ変換します。
 * @param str 変換対象の文字列
 * @return 変換後のjava.util.Dateオブジェクト
 * @throws ParseException 日付文字列が"yyyy/MM/dd"以外の場合 
 */
public static Date toDate(String str) throws ParseException {
    Date  date = DateFormat.getDateInstance().parse(str);
    return date;
}

実行結果

◆実行例
public static void main(String[] args) {
    try {
        // 通常のパターン
        Date date  = toDate("2007/01/01");
        System.out.println(date);

        // フォーマトが違うパターン
        date  = toDate("2007-01-01");
        System.out.println(date);
    } catch (ParseException e) {
        e.printStackTrace();
    }
}
◆出力結果
2007/01/01='Mon Jan 01 00:00:00 JST 2007'
 yyyy/MM/ddの日付文字列は正しく変換されたようですが、yyyy-MM-ddではどうでしょうか。
java.text.ParseException: Unparseable date: "2007-01-01"
    at java.text.DateFormat.parse(DateFormat.java:335)
    at Main.toDate(DateUtil.java:627)
    at Main.main(DateUtil.java:639)
 yyyy-MM-ddではParseExceptionが発生してしまいました。

DateFormat のサブクラスの java.text.SimpleDateFormat を使用し以下のように記述すると変換できるのですが、
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
format.parse("2007-01-01");  
もっと汎用的なプログラムが欲しいですよね。
次はあらゆる日付文字列を可能な限り、java.util.Date 型へ変換する方法をご紹介します。
「あらゆる日付・時刻文字列を Date、Calendar 型へ変換」