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


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

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 53

2 ответа:

ОК, дальнейшее гугление дало мне ответ на мой собственный вопрос: use 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");

это работает.

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

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