Java Date ha millisecondo precisione così mi è stato creato l'oggetto Gson
in questo modo:
Gson gson = new GsonBuilder()
.setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
.create();
Naturalmente, in un caso come questo, i microsecondi vengono troncate se si mette SSS
o SSSSSS
. Si presume inoltre che l'ultimo carattere della stringa convertita sia sempre un Z
.
a spiegare perché il vostro modello non ha funzionato, si è utilizzato z
(z minuscola), che in base alla documentazione rappresenta un General Timezone (vale a dire Pacific Standard Time; PST; GMT-08:00
). Inoltre, se si dovesse utilizzare Z
(maiuscolo Z), non funzionerebbe anche in quanto rappresenta un (ad esempio -0800
).
In un altro scenario in cui al posto del Z
si dispone di una differenza di fuso orario (cioè -08
, -0800
o -08:00
), è possibile utilizzare X
, XX
, o XXX
a rappresentare un ISO 8610 time zone. Ma ciò richiede Java 7 o 8 (non credo che Android sia compatibile con Java 8 al momento).
Un altro metodo sarebbe quello di scrivere il proprio Gson
Serializer and Deserializer; anche se non ho provato
Vale anche la pena guardare la classe java.sql.Timestamp che è anche supportata da Gson
e ha una precisione a grana fine (nanosecondi) ma è anche un'opzione che non ho esplorato.
Utilizzare le classi nel [framework java.time] (http://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html) integrato in Java 8 e versioni successive. Hanno una risoluzione di nanosecondi per un massimo di nove cifre di un secondo frazionario. –