Почему 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 утра, независимо от текущего времени.

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