Можете ли вы установить AM / PM на дату GregorianCalendar или это то, что вы можете получить только - PullRequest
6 голосов
/ 12 марта 2012

Я посмотрел API Java о GregorianCalendar и не нашел способа установить am / pm. в своем конструкторе. Можете ли вы установить AM / PM в дату GregorianCalendar или это то, что вы можете получить только с помощью метода get в календаре. Делает ли это все это автоматически. Я ищу взять am / pm и вывести его в моем toString для класса, который имеет объект даты. Я собирался использовать метод get в календаре, чтобы получить это. Я понимаю, что am / pm - это int, равное 0 или 1.

Мне также было интересно, все ли часы по григорианскому составляют 24 часа, и он автоматически определяет am и pm?

Ответы [ 3 ]

33 голосов
/ 12 марта 2012
Calendar.get(Calendar.HOUR);

Дает час (0-12) для формата AM / PM.

Calendar.get(Calendar.HOUR_OF_DAY);

Дает час в диапазоне от 0-24.

Выполняет преобразование на своемсвоя.Вам не нужно это говорить.

cal.set( Calendar.AM_PM, Calendar.AM )

Will / Could изменит время, которое представляет этот объект календаря.(Если это 1:00 вечера, у вас будет 1:00 утра после этого).Это верно для GregorianCalendar (см. Комментарий к вопросу Питера Цетински).

Кстати / Подсказка imo вы должны использовать DateFormat для вывода предпочитаемого вами формата.

6 голосов
/ 12 марта 2012
Calendar cal = new GreogorianCalendar();   
cal.set( Calendar.AM_PM, Calendar.AM );
0 голосов
/ 07 января 2019

Просто я сделал это:

Calendar calendar = new GregorianCalendar();
    int seconds = calendar.get(Calendar.SECOND);
    int minutes = calendar.get(Calendar.MINUTE);
    int hour = calendar.get(Calendar.HOUR);
    int am_pm = calendar.get(Calendar.AM_PM);
    String ampm = "ampm";
    if (am_pm == 0) {
        ampm = "AM";
    } else {
        ampm = "PM";
    }
    jLabel1.setText(hour + ":" + minutes + ":" + seconds + " " + ampm);
...