Java, добавление минут к дате, странная аномалия

С версией Java 1.5.0_06 как в Windows, так и в Ubuntu Linux:

Каждый раз, когда я добавляю минуты к дате «2008/10/05 00:00:00», кажется, что дополнительный час добавлен неправильно.

то есть: добавление 360 минут к 2008/10/05 00:00:00 в полночь должно прибыть в 2008/10/05 06:00:00

Но он прибывает 2008/10/05 07:00:00

Совершенно сбивает с толку то, что этот ТОЛЬКО происходит, когда день 2008/10/05, во все остальные дни, когда я пытаюсь правильно добавить минуты.

Я схожу с ума или это ошибка Java?

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");

    try {
        String date = "2008/10/05 00:00:00";
        int minutesToAdd = 360;  // 6 hrs

        Calendar cal = Calendar.getInstance();
        cal.setTime(sdf.parse(date));
        cal.add(Calendar.MINUTE, minutesToAdd);
        System.out.println(cal.getTime());

    } catch (ParseException e) {}
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
12
0
34 638
3

Ответы 3

В этот день происходит переход на летнее время.

Ты в Новой Зеландии? Если это так, это означает, что ваши файлы часовых поясов устарели. Лучше зайдите на сайт загрузки Java и скачайте новые; найдите «Инструмент обновления часового пояса JDK DST».

Хе-хе-хе, ага! В любом случае, мой комментарий о Новой Зеландии таков, поскольку в прошлом году летнее время было перенесено с первого воскресенья октября на последнее воскресенье сентября. Поскольку Java 5 существует довольно давно, файлы зон действительно могут нуждаться в обновлении.

Chris Jester-Young 13.11.2008 02:45

Может ли это быть переходом на летнее время?

Взгляните на Джода-Тайм.

Из документации:

«Joda-Time был создан для радикального изменения обработки даты и времени в Java. Классы JDK Date и Calendar очень плохо спроектированы, содержат множество ошибок и имеют странные эффекты производительности».

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