2017-09-02 4 views
-1

に有効なものに無効な日付を変換:月> 12にDateFormatのparse()メソッド私は無効な日付を抱えているの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);

関連する問題