21

SimpleDateFormatは、エラーをスローする代わりに、結果の日付をローリングする非常に親切なパーサーです。正規表現などを使わずに日付を厳密に解析するにはどうすればよいですか?

fmt = new SimpleDateFormat("dd.MM.yyyy")
fmt.parse("10.11.2012")   // it works
fmt.parse("10.1150.2012") // it works but it's unwanted
4

3 に答える 3

35

fmt.setLenient(false);あなたが探しているものです。

于 2012-10-26T13:46:42.760 に答える
13

java.time

Java 8 以降ではjava.time パッケージを使用することもできます(チュートリアル)。その解析では、日付の値が厳密にチェックされます。

例えば:

String strDate = "20091504";
TemporalAccessor ta = DateTimeFormatter.ofPattern("yyyyMMdd").parse(strDate);

直接与える:

Exception in thread "main" java.time.format.DateTimeParseException:
Text '20091504' could not be parsed:
Invalid value for MonthOfYear (valid values 1 - 12): 15
于 2015-06-14T14:23:57.657 に答える