[英]ISO 8601 with milliseconds and Retrofit
在使用改造並嘗試讀取這樣的日期時,我無法正確設置日期格式:
2015-08-29T11:22:09.815479Z
我設置的GSON轉換器是這樣的:
GsonConverter gsonConverter = new GsonConverter(
new GsonBuilder()
.setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSz")
.create()
);
什么問題的線索?
Java Date具有毫秒級的精度,因此我一直在創建Gson
對象:
Gson gson = new GsonBuilder()
.setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
.create();
當然,在這種情況下,無論你使用SSS
還是SSSSSS
,微秒都會被截斷。 還假設轉換后的字符串的最后一個字符始終為Z
為了解釋為什么你的模式不起作用,你使用z
(小寫z),根據文檔表示一般時區 (例如, Pacific Standard Time; PST; GMT-08:00
)。 此外,如果您使用Z
(大寫Z),它也將無法工作,因為它代表RFC 822時區 (例如, -0800
)。
在另一種情況下,您可以使用X
, XX
或XXX
來代替ISO 8610時區 ,而不是Z
,而是具有時區偏移(例如, -08
, -0800
或-08:00
)。 但這需要Java 7或8(我不認為Android目前與Java 8兼容)。
另一種方法是編寫自己的Gson
Serializer和Deserializer ; 雖然我沒試過。
它也值得看看Gson
也支持的java.sql.Timestamp類,並且具有更精細的精度(納秒),但它也是我沒有探索的選項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.