在使用改装并尝试读取这样的日期时,我无法正确设置日期格式:
2015-08-29T11:22:09.815479Z
我设置的GSON转换器是这样的:
GsonConverter gsonConverter = new GsonConverter(
new GsonBuilder()
.setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSz")
.create()
);
有关问题的任何线索?
答案 0 :(得分:6)
Java Date具有毫秒精度,因此我一直在创建Gson
对象,如下所示:
Gson gson = new GsonBuilder()
.setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
.create();
当然,在这种情况下,无论您放置SSS
还是SSSSSS
,微秒都会被截断。还假设转换后的字符串的最后一个字符始终为Z
。
要解释为什么您的模式不起作用,您使用z
(小写z),根据文档代表General Timezone(例如Pacific Standard Time; PST; GMT-08:00
)。此外,如果您使用Z
(大写Z),它也不会起作用,因为它代表RFC 822 time zone(例如,-0800
)。
在另一种情况下,您可以使用{{1而不是Z
您有时区偏移(例如-08
,-0800
或-08:00
)。 },X
或XX
代表ISO 8610 time zone。但这需要Java 7或8(我不认为Android目前与Java 8兼容)。
另一种方法是编写自己的XXX
Serializer and Deserializer;虽然我没有尝试过。
它也值得看java.sql.Timestamp类Gson
同样支持Gson
并具有更精细的精度(纳秒),但它也是我的选择&#39 ; t探索。
答案 1 :(得分:0)