0

我正在尝试将一个看起来像这样的日期解析 Sat Sep 19 2020 07:14 AM PDTZonedDateTime.

我正在使用这个格式化程序

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

我正在尝试将字符串转换为

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()
    }
}
4

1 回答 1

0

你试过这样吗?

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]
于 2020-09-19T19:47:56.150 回答