Calendar类中的HOUR是否基于特定时区?

时间:2013-08-30 15:19:41

标签: java calendar gregorian-calendar

我有点困惑。我一直在使用Java中的Calendar和GregorianCalendar类,我一直在打印小时,但它说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

1 个答案:

答案 0 :(得分:0)

GregorianCalender的no-arg构造函数使用Timzone.getDefault()作为其时区。这是执行代码的JVM的时区(或者换句话说:本地时间)。所有日历字段(包括Calendar.HOUR)均基于此时区。

如果这与当地时间不同,则JVM位于不同的时区,或者JVM(或者更确切地说是其托管计算机)配置不正确。