ISO 8601 con milisegundos y Retrofit

No puedo establecer correctamente el formato de fecha al usar la actualización y tratar de leer una fecha como esta:

2015-08-29T11:22:09.815479Z 

Un convertidor GSON que estoy configurando es como esto:

 GsonConverter gsonConverter = new GsonConverter( new GsonBuilder() .setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSz") .create() ); 

¿Alguna pista sobre cuál es el problema?

One Solution collect form web for “ISO 8601 con milisegundos y Retrofit”

La fecha de Java tiene una precisión de milisegundos, así que he estado creando el objeto Gson así:

 Gson gson = new GsonBuilder() .setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'") .create(); 

Por supuesto, en un caso como este, los microsegundos se están truncando si usted pone SSS o SSSSSS . También se supone que el último carácter de la cadena convertida es siempre un Z

Para explicar por qué su patrón no funcionó, utilizó z (minúscula z) que, de acuerdo con la documentación, representa una zona horaria general (es decir, Pacific Standard Time; PST; GMT-08:00 ). Además, si tuviera que usar Z ( Z mayúscula), también no funcionaría ya que representa una zona horaria RFC 822 (es decir, -0800 ).

En otro escenario donde, en lugar de Z , tiene un desfase de zona horaria (es decir, -08 , -0800 o -08:00 ), puede utilizar X , XX o XXX para representar una zona horaria ISO 8610 . Pero eso requiere Java 7 u 8 (no creo que Android es compatible con Java 8 en este momento).


Otro método sería escribir su propio Gson Serializer y Deserializer ; Aunque no lo he intentado.

También vale la pena mirar la clase java.sql.Timestamp que también es compatible con Gson y tiene una precisión más fina (nanosegundos) pero también es una opción que no he explorado.

  • Intervalo de tiempo límite en el selector de tiempo
  • eliminar% 0A de la cadena
  • Android: empieza en el modo de teclado de símbolos, pero no restringe la entrada de sólo números
  • Proguard no obstruye las aplicaciones de Android
  • ¿Por qué el método onCreateOptionsMenu de Android devuelve super.onCreateOptionsMenu?
  • Resolver la intención de URL a veces es nulo, lanza NullPointerException
  • ArrayList <Integer> con el método get / remove
  • ¿Cómo obtener valores de Internet y una matriz String y pasarla a una vista de cuadrícula en Android?
  • Imagen de limpieza para ayudar a tesseract en Android
  • No se puede analizar la plantilla "Clase" Error siempre que intento abrir una nueva clase java
  • Significado de RuntimeException ("Stub!") En Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.