С версией 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) {}




В этот день происходит переход на летнее время.
Ты в Новой Зеландии? Если это так, это означает, что ваши файлы часовых поясов устарели. Лучше зайдите на сайт загрузки Java и скачайте новые; найдите «Инструмент обновления часового пояса JDK DST».
Может ли это быть переходом на летнее время?
Взгляните на Джода-Тайм.
Из документации:
«Joda-Time был создан для радикального изменения обработки даты и времени в Java. Классы JDK Date и Calendar очень плохо спроектированы, содержат множество ошибок и имеют странные эффекты производительности».
Хе-хе-хе, ага! В любом случае, мой комментарий о Новой Зеландии таков, поскольку в прошлом году летнее время было перенесено с первого воскресенья октября на последнее воскресенье сентября. Поскольку Java 5 существует довольно давно, файлы зон действительно могут нуждаться в обновлении.