Является ли HOUR в классе Calendar основанным на определенном часовом поясе?

Я немного запутался. Я работал с классами Calendar и GregorianCalendar на Java и печатал часы, но там написано 4, а сейчас 11.

Мой вопрос: час основан на местном времени? Это основано на определенном часовом поясе?

Я посмотрел вокруг, но я не нашел четкого ответа.

    Calendar today = new GregorianCalendar();
    int y = today.get(Calendar.YEAR);
    int h = today.get(Calendar.HOUR);
    int ap = today.get(Calendar.AM_PM);
    System.out.println(y + " " + h + " " + ap);

И мой вывод:

2013 4 1

person lonewookie    schedule 30.08.2013    source источник
comment
Покажите некоторый код, связанный с тем, как вы печатаете.   -  person kosa    schedule 30.08.2013
comment
Отредактировано, чтобы показать код и вывод.   -  person lonewookie    schedule 30.08.2013
comment
Что вы используете в качестве IDE?... Когда я запускаю это, я получаю местное время (я использую netbeans)...   -  person gtgaxiola    schedule 30.08.2013
comment
Я думаю, что это может быть проблемой сейчас. На самом деле я компилирую на Ideaone.com, потому что на этом компьютере у меня нет IDE.   -  person lonewookie    schedule 30.08.2013
comment
Когда вы создаете Calendar, это зависит от их времени, а не от вашего.   -  person Josh M    schedule 30.08.2013
comment
Да, я предполагаю, что сайт размещен где-то в Лондоне или другом месте в этом часовом поясе. Виноват. Спасибо за вашу помощь.   -  person lonewookie    schedule 30.08.2013


Ответы (1)


Конструктор GregorianCalender без аргументов использует Timzone.getDefault() в качестве своего часового пояса. Это часовой пояс (или, другими словами, местное время) JVM, выполняющей ваш код. Все поля календаря, включая Calendar.HOUR, основаны на этом часовом поясе.

Если оно отличается от вашего локального времени, то либо JVM находится в другом часовом поясе, либо JVM (точнее, ее хост-компьютер) настроен неправильно.

person Gerhard    schedule 30.08.2013