JodaTime летнее время ошибка

Я хочу создать объект DateTime из строки ISO8601 (например, 2012-11-05T07:00:00+0000). Вот код:

...
DateTime day = new DateTime(dateStr);
System.out.println(dateStr + "=>" + day);

Я получил эти результаты:

...
2012-11-04T07:00:00+0000=>2012-11-04T00:00:00.000-07:00
2012-11-05T07:00:00+0000=>2012-11-04T23:00:00.000-08:00
2012-11-06T08:00:00+0000=>2012-11-06T00:00:00.000-08:00
...

11-04 а также 11-06 верны, но 11-05 не правы. Как это исправить? Я на западном побережье Северной Америки.

1 ответ

Решение

В чем заключается неправильность 11-05? 4 ноября в 2 часа ночи по местному времени (то есть в 9 часов утра по UTC) западное побережье перешло с UTC-7 на UTC-8.

Теперь 5 ноября в 7:00 UTC, которая является вашей второй линией, идет после этого момента времени, поэтому правильным будет UTC-8... и, следовательно, местное время - 11:00 4 ноября, именно так, как показано.

Время Joda прямо здесь (неудивительно).

Другие вопросы по тегам