いくつかの日付を解析しようとしていますが、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))
これを試してみると
Java.time.format.DateTimeParseException: Text 'Wed Jul 16, 2016 4:38pm EDT' could not be parsed at index 17
それで、時間に何か問題がありますか? 'h'の1つをドロップすると、さらに進みます(ただし、時間を0-padする必要があります)が、pm-stuffが気に入らない
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
彼の正確な問題が何であるかはわかりません。 'hh:mmaa'をパターンとして試してみると、2つのaが気に入らないと表示され、エラーメッセージが役に立たないため、スタックします。
a
は、大文字でPM
またはAM
のいずれかを予期します。大文字と小文字を区別しないフォーマッタを取得するには、手動で作成する必要があります。
DateTimeFormatter fmt = new DateTimeFormatterBuilder()
.parseCaseInsensitive()
.appendPattern("EEE MMM dd, yyyy h:mma z")
.toFormatter(Locale.US);
7月16日は水曜日ではないため、新しいエラーが発生することに注意してください。
このソリューションは、「MMM」を使用して大文字と小文字が混在する月(「7月」など)を解析しようとすることも解決することがわかりました。