2017-09-02 32 views
-1

我有一個無效的日期轉換無效日期有效的一個:與一個月> 12日期格式解析()方法在Java中

String input = "12-30-2017"; 
DateFormat inputFormatter = new SimpleDateFormat("yyyy-MM-dd"); 
Date date = inputFormatter.parse(input); 

,而我在我的日子調試光標,它給了我12 -06-2019。它似乎是增加了幾個月,並制定了一個有效的日期。

我需要在這裏拋出無效日期。怎麼做。

+5

https://docs.oracle.com/javase/8/docs/api/java/text/DateFormat.html#setLenient-boolean-。但是您最好忘記已過時的Date和DateFormat,並使用java.time API。 –

+0

在解析之前嘗試'inputFormatter.setLenient(false)'來強制執行嚴格的解析。 –

+3

爲什麼你認爲格式爲MM-dd-yyyy的日期會以格式yyyy-MM-dd正確解析? –

回答

1

您的格式模式必須你的輸入字符串相匹配。

使用現代java.time類而不是麻煩的遺留日期時間類。

DateTimeFormatter f = DateTimeFormatter.ofPattern("MM-dd-uuuu") ; 
LocalDate ld = LocalDate.parse("12-30-2017" , f) ; 

只要有可能,請使用標準ISO 8601格式交換日期時間字符串。

2

請嘗試inputFormatter.setLenient(false);