![](/img/trans.png)
[英]Java Gson JsonSyntaxException caused by ParseException: Unparsable date
[英]gson JsonSyntaxException to Java Date from .net DateTime
如何將C#的DateTime格式從gson轉換為Java Date? 在gson中,哪個setDateFormat是正確的? C#
DateTime time = DateTime.Now;
JSON
{
"date_time": "2015-04-24T09:22:08.6964069+08:00"
}
Android的
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 time zone
的X
模式符號,則由於時區中的冒號,因此您無法使用此日期格式。 如果可以利用它,則模式如下所示:
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中所述。
對於DateTime.UtcNow
,模式將為"yyyy-MM-dd'T'HH:mm:ss.SSS"
,完整代碼將為
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS").create();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.