2011-08-10 33 views

Respuesta

11

RFC 3339 describe un "perfil" ISO 8601 específico para la representación de fecha/hora.

Si utiliza una biblioteca de código abierto de terceros, eche un vistazo a la clase de utilidad ISODateTimeFormat de Joda-Time.

De lo contrario, si necesita desplegar su propio código, no es suficiente utilizar un SimpleDateFormat debido a la forma en que ISO 8601/RFC 3339 representa la información de la zona horaria.

Si todo lo que necesita para 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, deberá extender lo anterior para analizar el designador de zona horaria y recuperar la instancia Java TimeZone correspondiente. Eso no debería ser demasiado difícil si solo son horas completas +/- GMT, pero en el caso de los desplazamientos no estándar, es posible que deba crear su propia instancia de SimpleTimeZone.

0
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); 
+0

He mencionado el formato de la fecha. Esa fecha está en formato RFC3339. Si tiene alguna idea de cómo analizar las fechas de RFC3339, háganoslo saber. – sunil

+0

Editado arriba, ¿fue útil? Esto podría ayudar: http://cokere.com/RFC3339Date.txt – atzu

Cuestiones relacionadas