gpt4 book ai didi

java - 来自 .net DateTime 的 Java 日期的 gson JsonSyntaxException

转载 作者:太空狗 更新时间:2023-10-29 16:35:35 24 4
gpt4 key购买 nike

如何将 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)

最佳答案

如果您不能使用通常用于 ISO 8601 时区X 模式符号,您就无法处理这种日期格式,因为时区中的冒号。如果您可以使用它,该模式将如下所示:

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

解决方法是将其作为 String 处理,从中删除冒号(例如 replaceAll(String),然后使用 RFC 822 对其进行格式化时区(模式符号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 中所述.

关于java - 来自 .net DateTime 的 Java 日期的 gson JsonSyntaxException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29843188/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com