Проблема с добавлением часов в григорианский календарь - PullRequest
2 голосов
/ 08 июня 2011

У меня есть приложение Grails. Я создал григорианский календарь по Гринвичу.Время дня было 11:00:00 PM GMT.Я добавил 3 часа к объекту григорианского календаря, и он изменил время дня на 2:00:00 AM, но не увеличил день года.Я должен был проверить случай, когда я добавляю часы к календарю, и если это новое время должно перейти в новый день, я должен был увеличить день года.Это похоже на ошибку в классе GregorianCalendar, но я хочу убедиться, что я не делал что-то не так.Вот разные способы, которыми я добавил часы.

myCalender.add(Calender.HOUR,3)

и

myCalender.add(Calender.HOUR_OF_DAY,3)`

и

myCalender.setTimeInMillis( myCalender.getTimeInMillis() + (( (1000 * 60) * 60) * 3))`

Если дата и время начала, например, 6/1/2011 11:00:00 PM GMT, и я выполняю приведенный выше код, я быожидайте, что новая дата и время будут 6/2/2011 02:00:00 AM GMT, но я получил 6/1/2011 02:00:00 AM GMT.Может ли кто-нибудь, пожалуйста, обучить меня?

1 Ответ

4 голосов
/ 08 июня 2011

У меня работает:

final DateFormat format = SimpleDateFormat.getDateTimeInstance();
format.setTimeZone(DateUtils.UTC_TIME_ZONE);

final GregorianCalendar cal = new GregorianCalendar(DateUtils.UTC_TIME_ZONE);
cal.set(2011, Calendar.JUNE, 1, 23, 30, 0);
System.out.println(format.format(cal.getTime()));
cal.add(Calendar.HOUR_OF_DAY, 1);
System.out.println(format.format(cal.getTime()));

Производит:

2011-06-01 23:30:00
2011-06-02 00:30:00
...