2016-05-10 7 views
1

私は特定の日付の値を解析する必要があるCSVファイルを読み込もうとしています。 しかし、私は配置できないDateTimeParseExceptionを取得します。私が使用 08-May-2016Java DateTimeFormatter

コード: LocalDate date = LocalDate.parse(row[3], DateTimeFormatter.ofPattern("d-M-yy"));row[3]である私は、CSVファイルから読み込むフィールド

私は読んしようとしているフィールドは次のようになります日付フィールドです。

私が手例外:Text '08-May-16' could not be parsed at index 3

は私が間違ってd-M-yy年の月の一桁、二桁と文字表現を読むことができるはずと考えているだろうか?

EDIT:月のMMM-MM-Mと日フィールドのdd-dを試しました。私はまだ同じ例外を取得します。

+1

パターン「dd-MMM-yyyy」を試してください。 – Lefteris008

+0

@ PiXel1225私は、私はまだ同じ例外が発生します。 – k88

+1

docを読んだか:https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html?月の名前はロケールに依存しますので、[ロケールの設定](https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#ofPattern-java)をお勧めします。 lang.String-java.util.Locale-) –

答えて

3

ここでの問題は、あなたがあなたのDateTimeFormatterを作成するときにLocaleを供給していないということです - あなたはその形式をサポートLocale使用する必要があります。

System.out.println(LocalDate.parse("08-May-2016", DateTimeFormatter.ofPattern("dd-MMM-yyyy", Locale.ENGLISH))); 

出力:

2016-05-08 

これを動作しません:

System.out.println(LocalDate.parse("08-May-2016", DateTimeFormatter.ofPattern("dd-LLL-yyyy", Locale.ENGLISH))); 

出力:

Exception in thread "main" java.time.format.DateTimeParseException: Text '08-May-2016' could not be parsed at index 3 
    at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949) 
    at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851) 
    at java.time.LocalDate.parse(LocalDate.java:400) 
+0

ありがとう、これは正解です。他の人が示唆しているように、私はすでにd-MMMとdd-MMMなどの形式を試していたが、うまくいかなかった。私のPCは英語の日時設定に設定されていないので、lcoaleは必要なものでした。 – k88

1

私はd-M-yyが1桁の1桁、2桁および文字の表記を読めるようにすべきだと誤っていますか?

はい。あなたのパターンはフォーム1-5-16の日付を正しく解析しますが、2016年5月10日は解析しません。試してくださいdd-MMM-yyyy

関連する問題