org.threeten.bp.format.DateTimeParseException: не удалось проанализировать текст "Сб, 19 сентября 2020, 07:14 по тихоокеанскому времени" в индексе 25 в $ .root.bsa [0] .posted

Я пытаюсь разобрать дату, которая выглядит так:Sat Sep 19 2020 07:14 AM PDTв ZonedDateTime.

Я использую этот форматер

DateTimeFormatter.ofPattern(
  "EEE MMM dd yyyy hh:mm a zzz",
  Locale.US
)

и я пытаюсь преобразовать String с помощью

ZonedDateTime.parse(
  value,
  formatter
)

Однако это вызывает следующее исключение:org.threeten.bp.format.DateTimeParseException: Text 'Sat Sep 19 2020 07:14 AM PDT' could not be parsed at index 25 at $.root.bsa[0].posted

Я не совсем уверен, где ошибка в моей строке формата даты: я прогнал ее через http://www.fileformat.info/tip/java/simpledateformat.html, чтобы проверить, но похоже, что форматирование правильно на там.

Дополнительный контекст: этот код выполняется в адаптере Moshi и в приложении для Android:

class ZonedDateTimeAdapter {
    private val formatter = DateTimeFormatter.ofPattern( "EEE MMM dd yyyy hh:mm a z", Locale.US )

    @FromJson
    fun fromJson(value: String): ZonedDateTime {
        return ZonedDateTime.parse( value, formatter )
    }

    @ToJson
    fun toJson(value: ZonedDateTime): String {
        return value.toString()
    }
}

1 ответ

Вы пробовали вот так?

String s = "Sat Sep 19 2020 07:14 AM PDT";
ZonedDateTime z = ZonedDateTime.parse(s, DateTimeFormatter.ofPattern(
                "EEE MMM dd yyyy hh:mm a z"));
System.out.println(z);

Печать

2020-09-19T07:14-07:00[America/Los_Angeles]
Другие вопросы по тегам