Почему GregorianCalendar устанавливает ЧАС в зависимости от системного времени (AM/PM)
Я просто создаю java.util.GregorianCalender
GregorianCalendar calender = new GregorianCalendar();
Теперь установите часы, минуты, секунды и мс следующим образом
c.set(Calendar.HOUR, 6);
c.set(Calendar.MINUTE, 45);
c.set(Calendar.SECOND, 30);
c.set(Calendar.MILLISECOND, 345);
теперь печатает вывод, используя метод getTime()
System.out.println("Date and Time: "+c.getTime());
Когда системное время в AM, выходной
Date and Time: Tue Feb 09 06:45:23 IST 2016
А когда системное время в PM, вывод
Date and Time: Tue Feb 09 18:45:23 IST 2016
Теперь мой вопрос: почему вывод меняется с системным временем?
1 ответ
new GregorianCalendar()
поля устанавливаются с использованием текущего времени в вашем часовом поясе по умолчанию. Поэтому флаг AM/PM устанавливается в зависимости от того, является ли текущее время в вашем часовом поясе по умолчанию AM или PM.
Когда вы установите HOUR
до 6 флаг AM/PM не изменяется, и полученный календарь устанавливается на 6 утра или 6 вечера в зависимости от текущего времени.
Если вы установите HOUR_OF_DAY
до 6, календарь будет установлен на 6 утра, независимо от текущего времени.