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 прямо здесь (неудивительно).