java - examples - ¿Cómo puedo analizar una fecha, incluida la zona horaria con Joda Time?
jodatime difference between dates (2)
Este fragmento de código siempre analiza la fecha en la zona horaria actual, y no en la zona horaria de la cadena que se está analizando.
final DateTimeFormatter df = DateTimeFormat
.forPattern("EEE MMM dd HH:mm:ss ''GMT''Z yyyy");
final DateTime dateTime = df
.parseDateTime("Mon Aug 24 12:36:46 GMT+1000 2009");
System.out.println("dateTime = " + dateTime);
// outputs dateTime = 2009-08-24T04:36:46.000+02:00
Emite:
dateTime = 2009-08-24T04:36:46.000+02:00
mientras que yo espero:
dateTime = 2009-08-24T04:36:46.000+10:00
¿Alguna idea de lo que estoy haciendo mal?
OK, Google adicional me dio la respuesta a mi propia pregunta: use withOffsetParsed()
, así:
final DateTimeFormatter df = DateTimeFormat
.forPattern("EEE MMM dd HH:mm:ss ''GMT''Z yyyy");
final DateTime dateTime = df.withOffsetParsed()
.parseDateTime("Mon Aug 24 12:36:46 GMT+1000 2009");
Esto funciona.
también puedes elegir:
// parse using the Paris zone
DateTime date = formatter.withZone(DateTimeZone.forID("Europe/Paris")).parseDateTime(str);