Pregunta

Este fragmento de código siempre se analiza la fecha en la zona horaria actual y no en la zona horaria en 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

Se da salida:

dateTime = 2009-08-24T04:36:46.000+02:00

mientras que yo esperaba:

dateTime = 2009-08-24T04:36:46.000+10:00

Alguna idea de lo que estoy haciendo mal?

¿Fue útil?

Solución

OK, más googlear me dio la respuesta a mi propia pregunta: use withOffsetParsed() , como 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.

Otros consejos

También se puede elegir:

// parse using the Paris zone
DateTime date = formatter.withZone(DateTimeZone.forID("Europe/Paris")).parseDateTime(str);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top