Я просто хочу создать метод, который устанавливает дату до времени «23: 59: 59.999» того же дня. Так что я сделал это:Странное поведение даты/календаря
public static Date date235959(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.set(Calendar.HOUR, 23);
c.set(Calendar.MINUTE, 59);
c.set(Calendar.SECOND, 59);
c.set(Calendar.MILLISECOND, 999);
//c.set(Calendar.AM_PM, Calendar.PM);
return c.getTime();
}
Когда я бегу:
Date d = new Date();
d=date235959(d);
System.out.println(d.toString());
d=date235959(d);
System.out.println(d.toString());
Я ожидал
Tue 17 сентября 23:59:59 BRT 2013
Вт Сен 17 23:59:59 BRT 2013
Но выход был
вт 17 сентября 23:59:59 BRT 2013
ср 18 сентября 11:59:59 BRT 2013
Почему это произошло и как я могу это исправить?