在Android上尝试解析此日期字符串:
2017-02-21T00:45:03-05:00
使用UTcDateTypeAdapter使用GSON 2.8.0我得到一个例外:
Caused by: com.google.gson.JsonParseException: java.text.ParseException: Failed to parse date ["2017-02-21T00:45:03-05:00']: null (at offset 0)
at com.google.gson.typeadapters.UtcDateTypeAdapter.read(UtcDateTypeAdapter.java:66)
at com.google.gson.typeadapters.UtcDateTypeAdapter.read(UtcDateTypeAdapter.java:39)
...
很明显,日期的格式有效。
答案 0 :(得分:0)
事实证明关键是我在Android(API< 23)版本的Android上使用非 EN(即AR)Locale以及在此下处理时区ID的方式区域设置。
违规代码是:
TimeZone timezone = TimeZone.getTimeZone(timezoneId);
if (!timezone.getID().equals(timezoneId)) {
throw new IndexOutOfBoundsException();
}
与早期版本的Android一样,上述代码中timezone.getID()与timezoneId的值为:
GMT-٠٥:٠٠
vs GMT-05:00