2016-07-07 19 views
6

私はいくつかの日付を解析しようとしていますが、私は、これはそれがJava8てDateTimeFormatter午前/午後

java.time.format.DateTimeParseException: Text 'Wed Jul 16, 2016 4:38pm EDT' could not be parsed at index 17 

だから、何かを言うしようとするとDateTimeParserが

import java.time.ZonedDateTime 
import java.time.format.DateTimeFormatter 
import java.util.Locale 

ZonedDateTime.parse("Wed Jul 16, 2016 4:38pm EDT", DateTimeFormatter.ofPattern("EEE MMM dd, yyyy hh:mma z", Locale.US)) 

有効なものに私と一緒に同意するようです時間が間違っていますか?私は「H」のいずれかをドロップすると(それだけで0・パッド私の時間べきaltough)それはさらに取得しますが、それは

ZonedDateTime.parse("Wed Jul 16, 2016 4:38pm EDT", DateTimeFormatter.ofPattern("EEE MMM dd, yyyy h:mma z", Locale.US)) 
java.time.format.DateTimeParseException: Text 'Wed Jul 16, 2016 4:38pm EDT' could not be parsed at index 21 

PM-ものを好きではない私は何を彼の正確な分かりません問題はです。私は 'hh:mmaa'をパターンとして試してみると、2つのaが好きではないと言います。エラーメッセージは役に立ちませんので、今は止まっています。

答えて

9

aは、PMまたはAMのいずれかを大文字にします。 7月の16日は水曜日ではありませんので、あなたが新しいエラーになります

DateTimeFormatter fmt = new DateTimeFormatterBuilder() 
     .parseCaseInsensitive() 
     .appendPattern("EEE MMM dd, yyyy h:mma z") 
     .toFormatter(Locale.US); 

注:大文字小文字を区別しないフォーマッタを取得するには、手動でそれを構築する必要があります。

+0

なぜデフォルトは小文字をサポートしていないのでしょうか?古いjava.util.Dateコードをjava.timeに変換していましたが、SimpleDateFormatには問題はありませんでした。 –

関連する問題