Джода-Тайм, Изменение летнего времени и анализ даты и времени

У меня возникла следующая проблема с использованием Joda-Time для синтаксического анализа и создания даты и времени около летнего времени (DST) часов. Вот пример (обратите внимание, что 30 марта 2008 г. - переход на летнее время в Италии):

DateTimeFormatter dtf = DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss");
DateTime x = dtf.parseDateTime("30/03/2008 03:00:00");
int h = x.getHourOfDay();
System.out.println(h);
System.out.println(x.toString("dd/MM/yyyy HH:mm:ss"));
DateTime y = x.toDateMidnight().toDateTime().plusHours(h);
System.out.println(y.getHourOfDay());
System.out.println(y.toString("dd/MM/yyyy HH:mm:ss"));

Я получаю следующий результат:

3
30/03/2008 03:00:00
4
30/03/2008 04:00:00

Когда я анализирую час, я получаю, что час равен 3. В моей структуре данных я сохраняю день, сохраняя полуночное время, а затем у меня есть какое-то значение для каждого часа дня (0-23). ​​Затем, когда я записываю дату, я повторно вычисляю время полной даты, делая полночь плюс Час. Когда я суммирую 3 часа до моей полуночи, я получаю 04:00:00! А если еще раз разобрать, получаю часа 4!

В чем моя ошибка? Есть ли способ получить второй час при синтаксическом анализе или третий час при распечатке?

Я также пытался создать вывод вручную:

String.format("%s %02d:00:00", date.toString("dd/MM/yyyy"), h);

но в данном случае для второго часа я получаю 30/03/ 2008 02:00:00, которая не является действительной датой (поскольку час 2 не существует) и больше не может быть проанализирована.

Заранее благодарим вас за вашу помощь. Филиппо

6
задан Basil Bourque 1 November 2013 в 04:27
поделиться