org.threeten.bp.format.DateTimeParseException:文本“Sat Sep 19 2020 07:14 AM PDT”无法在索引 25 的 $.root.bsa[0].posted 处解析

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

提问人:Jonathan Chiou 提问时间:9/20/2020 最后编辑:AnonymousJonathan Chiou 更新时间:9/20/2020 访问量:314

问:

我正在尝试将一个看起来像的日期解析为: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()
    }
}
java zoneddatetime threetenabp

评论

0赞 akuzminykh 9/20/2020
一个就够了。z
1赞 Eklavya 9/20/2020
无法重现演示
3赞 Arthur Maciel Gomes 9/20/2020
也许这个话题可以帮助你。stackoverflow.com/questions/44743139/......
1赞 Jonathan Chiou 9/20/2020
@Rono我在具有 Android 端口 github.com/JakeWharton/ThreeTenABP 的 Android 生态系统中运行代码:也许这可能会对事情产生影响
2赞 Anonymous 9/20/2020
这很奇怪。对不起,我没有任何建议。

答:

0赞 WJS 9/20/2020 #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]

评论

2赞 Jonathan Chiou 9/20/2020
我已经在这样做了:我更新了我的代码以使用硬编码的“Sat Sep 19 2020 07:14 AM PDT”,但问题仍然存在。
0赞 Jonathan Chiou 9/20/2020
代码包含在 moshi 适配器中: ''' 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() } } '''