Cómo convertir el tiempo en AAAA-MM-DDTHH: mm: ss.SSSZ formato a la zona horaria por defecto?
El tiempo que estoy recibiendo está en el formato "2011-07-31T08: 16: 37.733Z". En realidad el Z debe ser el huso horario y luego ese tiempo se convierte en zona horaria local. ¿Cómo puedo convertir este tiempo a la zona horaria predeterminada ahora.
- ¿Cómo obtener la compensación horaria en GMT (como GMT + 7: 00) desde el dispositivo Android?
- Fechas horarias de la fecha de Android driving me nuts
- ¿De dónde toma Android la zona horaria predeterminada?
- Android AlarmManager y DST / Timezone / Cambio de hora?
- ¿Cuáles son algunos ejemplos de valores devueltos por TimeZone.getAvailableIDs ()?
- Problema de zona horaria en Android
- TimeZone.getTimeZone ("CST") devuelve GMT
- Jodatime cómo saber si el horario de verano está en
- Cómo manejar la diferencia de zona horaria entre el servidor y la aplicación nativa de Android?
- Android cómo configurar la zona horaria a través de la aplicación
- Conversión de las fechas UTC a otras zonas horarias
- Lista predeterminada de zonas horarias de Android
- Android cómo obtener diferencia de tiempo entre dos zonas horarias en Android?
RFC 3339 describe un específico de ISO 8601 'perfil' para la fecha / hora de representación.
Si el uso de bibliotecas de código abierto de terceros es una opción, eche un vistazo a la clase de utilidad ISODateTimeFormat
Joda-Time.
De lo contrario, si necesita desplegar su propio código, no es suficiente usar un SimpleDateFormat
debido a la forma en que ISO 8601 / RFC 3339 representa información de zona horaria.
Si todo lo que necesitas analizar está en Z (Zulu o UTC), entonces es relativamente simple:
String input = "2011-08-11T01:23:45.678Z"; TimeZone utc = TimeZone.getTimeZone("UTC"); SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); f.setTimeZone(utc); GregorianCalendar cal = new GregorianCalendar(utc); cal.setTime(f.parse(input)); System.out.println(cal.getTime());
Debe imprimir "2011-08-11T01: 23: 45.678Z" en su zona horaria local.
Si necesita manejar zonas horarias arbitrarias en RFC 3339 entonces tendrá que ampliar lo anterior para analizar el designador de zona horaria y recuperar la correspondiente instancia de TimeZone
Java. Eso no debería ser demasiado difícil si sólo son horas enteras +/- GMT, pero en caso de compensaciones no estándar puede que tenga que crear su propia instancia de SimpleTimeZone
.
private static SimpleDateFormat DATE_TIME_FORMAT=new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); DATE_TIME_FORMAT.setTimeZone(TimeZone.getID()); //for example date=DATE_TIME_FORMAT.format(curDate);
- Android – diferencia entre res / menú y res / layout?
- Cómo reiniciar el servicio después de que la aplicación sea eliminada de las tareas recientes