views:

440

answers:

1

This snippet of code always parses the date into the current timezone, and not into the timezone in the string being parsed.

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

It outputs:

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

whereas I expect:

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

Any ideas what I'm doing wrong?

+2  A: 

OK, further Googling gave me the answer to my own question: use withOffsetParsed(), as so:

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");

This works.

Steve McLeod