2

問題を明らかにするために小さなコードを書きました。

public class date {
    public static void main(String args[]) {
        SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy",Locale.ENGLISH);
        System.out.println("The date format is : dd-MM-yyyy.");
        String date1 = "20-06-2012";
        System.out.println("The date1 is : " + date1);
        String date2 = "2012-06-20";
        System.out.println("The date2 is : " + date2);
        try {
            System.out.println(formatter.parse(date1).toString());
            System.out.println(formatter.parse(date2).toString());
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

出力は次のようになります。

The date format is : dd-MM-yyyy.
The date1 is : 20-06-2012
The date2 is : 2012-06-20
Wed Jun 20 00:00:00 EDT 2012
Mon Dec 03 00:00:00 EST 25

問題は、送信された日付がで指定されたパターンと一致しない場合にエラーを発生させたいことですSimpleDateFormat。残念ながら、ダッシュで区切られた文字列の正しい位置に数字が表示されているように見えるため、通過します。これを行う別のツールはありますか、それとも間違って使用していSimpleDateFormatますか?

4

2 に答える 2

9

を使用SimpleDateFormat.setLenient(boolean)して設定しfalse、SDF 解析ヒューリスティックをバイパスします。

次にJoda-Timeに切り替えます ;)

于 2012-06-14T20:14:18.687 に答える