Если у меня есть дата 2015-03-07 02:00:00 -0500, и я добавляю 1 день к ней (время меняется от 2 до 3 марта 8). Я получаю неправильное значение обратно в результирующей Календарь:Java Calendar DST advance issue/bug
перед добавлением 1 день: 2015-03-07 02:00:00 -0500
После добавления 1 день: 2015-03-08 01:00: 00 -0500
День был скорректирован, выполнив следующую строку кода:
System.out.println("Before Adding 1 Day: " + getFormattedDate(cal));
cal.add(Calendar.DATE, 1);
System.out.println("After Adding 1 Day: " + getFormattedDate(cal));
Как работает Каландр с 1-м часом, когда 2am перемещается вперед до 3 часов.
Ну, он должен вести себя так же, как если бы вы добавили 1 день к тому же самому Календарю в UTC и преобразовали его обратно, который всегда возвращает 3 утра, как ожидалось, так как 2am действительно стал 3am. Использование календаря на основе GMT за то же время производит:
перед добавлением 1 день кал: 2015-03-07 02:00:00 -0500
перед добавлением 1 день GMT калибровочный: 2015-03 -07 07:00:00 +0000
После добавления 1 день GMT кал: 2015-03-08 07:00:00 +0000
После добавления 1 день кал: 2015-03- 08 03:00:00 -0400
Calendar gmtCal = Calendar.getInstance(UTC_TIMEZONE);
gmtCal.setTimeInMillis(calTime);
System.out.println("Before Adding 1 Day cal: " + getFormattedDate(cal));
System.out.println("Before Adding 1 Day GMT cal: " + getFormattedDate(gmtCal));
gmtCal.add(Calendar.DATE, 1);
cal.setTimeInMillis(gmtCal.getTimeInMillis());
System.out.println("After Adding 1 Day GMT cal: " + getFormattedDate(gmtCal));
System.out.println("After Adding 1 Day cal : " + getFormattedDate(cal));
Пожалуйста, покажите короткую, но полную программу, демонстрирующую проблему, включая настройки для вашего часового пояса. –
Вы добавили код, но вам нужно показать определение для 'getFormattedDate' и' calTime'. Вы также не показали нам «cal». Ваш примерный код должен легко компилироваться и демонстрировать вашу проблему. –