【问题标题】:Failed to parse date ["2016-08-29 11:08:37.645007"]: Invalid time zone indicator ' '无法解析日期 [“2016-08-29 11:08:37.645007”]:时区指示符无效
【发布时间】:2018-06-27 10:13:53
【问题描述】:

我有 jsondata,其中一个字段是日期,它的值看起来像

“2016-08-29 11:08:37.645007”我使用gson从json中获取反序列化的对象 但它会引发以下执行

`

Caused by: java.text.ParseException: Failed to parse date ["2016-08-29 11:08:37.645007"]: Invalid time zone indicator ' '
    at com.google.gson.internal.bind.util.ISO8601Utils.parse(ISO8601Utils.java:274)
    at com.google.gson.DefaultDateTypeAdapter.deserializeToDate(DefaultDateTypeAdapter.java:149)
    ... 64 more
Caused by: java.lang.IndexOutOfBoundsException: Invalid time zone indicator ' '
    at com.google.gson.internal.bind.util.ISO8601Utils.parse(ISO8601Utils.java:245)
    ... 65 more

`

我不确定"yyyy-MM-dd'T'HH:mm:ss.SSSZ" 尝试的日期格式应该是什么,但它不起作用

【问题讨论】:

  • 输入中真的没有时区指示符......“645007”代表什么?百万分之一秒?
  • 你尝试过的把它贴在这里。??
  • 您是否查看了 Javadocs 以了解格式应该是什么?
  • 我建议你避免使用SimpleDateFormat 类。它不仅过时了,而且出了名的麻烦。今天我们在java.time, the modern Java date and time API 中做得更好。此外,SimpleDateFormat 也无法解析 6 位小数秒的小数点。它只支持毫秒精度。

标签: java gson simpledateformat date-format timezone-offset


【解决方案1】:

您尝试解析的日期不包含时区。
试试格式字符串yyyy-MM-dd HH:mm:ss.SSSSSS

【讨论】:

  • 是的,它没有时区信息,并且有一些冗余信息以及日期
猜你喜欢
  • 1970-01-01
  • 2016-06-22
  • 1970-01-01
  • 2012-02-13
  • 2021-07-26
  • 2012-11-09
  • 1970-01-01
  • 2017-01-26
  • 1970-01-01
相关资源
最近更新 更多