从.net DateTime将gson JsonSyntaxException转换为Java Date

Sha-Pai Li

如何将C#的DateTime格式从gson转换为Java Date?在gson中,哪个setDateFormat是正确的?C#

DateTime time = DateTime.Now;

JSON格式

{
  "date_time": "2015-04-24T09:22:08.6964069+08:00"
}

安卓

private Date date_time;

Gson gson=  new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").create();
gson.fromJson(resultString, objectClass);

E/AndroidRuntime(24671): Caused by: com.google.gson.JsonSyntaxException: 2015-04-24T16:20:08.3672729+08:00
E/AndroidRuntime(24671): Caused by: java.text.ParseException: Unparseable date: "2015-04-24T16:20:08.3672729+08:00"
E/AndroidRuntime(24671): at java.text.DateFormat.parse(DateFormat.java:626)
E/AndroidRuntime(24671): at com.google.gson.internal.bind.DateTypeAdapter.deserializeToDate(DateTypeAdapter.java:79)
奇凯

如果您无法使用X通常用于模式符号wich ISO 8601 time zone,则由于时区中的冒号,因此您无法使用此日期格式。如果可以利用它,则模式将如下所示:

yyyy-MM-dd'T'HH:mm:ss.SSSSSSSXXX

一种解决方法是将其处理为String,从中删除冒号(例如replaceAll(String),然后使用RFC 822 time zone(模式符号Z对其进行格式化

String time = inputTime.replaceAll("([\\+\\-]\\d\\d):(\\d\\d)","$1$2"));
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSSZZZ");
Date myDate = format.parse(time);

注意:由于毫秒和时区的结合,您必须硬设置数字量。

所述的SimpleDateFormat提供底层惯例,如所陈述的GsonDoc

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档