3

次のコードは、指定された形式で日付を解析しようとし31-Feb-2013 13:02:23ます。

DateFormat dateFormat=new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss");
System.out.println(dateFormat.parse("31-Feb-2013 13:02:23"));

を返しますSun Mar 03 13:02:23 IST 2013

無効な日付を示すそのような日付を無効にする必要があります。この(などの)日付は解析しないでください(または他の方法で無効にする必要があります)。これは可能ですか?

4

2 に答える 2

4

引数DateFormat.setLenient(boolean)付きのメソッドを使用します。false

DateFormat dateFormat=new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss");
dateFormat.setLenient(false);
System.out.println(dateFormat.parse("31-Feb-2013 13:02:23"));
于 2013-02-09T08:25:44.417 に答える
4

Javaの日付計算は寛大です。寛大な構文解析では、パーサーはヒューリスティックを使用して、このオブジェクトの形式と正確に一致しない入力を解釈する場合があります。

厳密モードに切り替わるdateformatに寛容にするには、falseを渡す必要があります。厳密な解析では、入力はこのオブジェクトの形式と一致する必要があります。

DateFormat dateFormat=new SimpleDateFormat("...");
dateFormat.setLenient(false); // turn on Strict mode
dateFormat.parse("31-Feb-2013 13:02:23");// throws java.text.ParseException 
于 2013-02-09T08:26:02.450 に答える