Как я могу разобрать дату, включая часовой пояс с Joda Time - PullRequest
53 голосов
/ 25 августа 2009

Этот фрагмент кода всегда анализирует дату в текущем часовом поясе, а не в часовом поясе в анализируемой строке.

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

Это выводит:

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

тогда как я ожидаю:

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

Есть идеи, что я делаю не так?

Ответы [ 2 ]

75 голосов
/ 25 августа 2009

ОК, далее Гуглинг дал мне ответ на свой вопрос: используйте withOffsetParsed(), вот так:

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

Это работает.

35 голосов
/ 04 мая 2013

Также вы можете выбрать:

// parse using the Paris zone
DateTime date = formatter.withZone(DateTimeZone.forID("Europe/Paris")).parseDateTime(str);
...