2013-08-30 21 views
0

我有点困惑。我一直在使用Java中的Calendar和GregorianCalendar类,并且我一直在打印这个小时,但它说的是4,现在是11。日历类中的HOUR是否基于特定时区?

我的问题是,是基于当地时间的小时?它是基于特定时区吗?

我环顾四周,但我还没有找到明确的答案。

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 
+0

显示与您的打印方式相关的一些代码。 – kosa

+0

编辑显示代码和输出。 – lonewookie

+1

你用什么IDE?...当我运行这个我得到当地时间(我使用netbeans)... – gtgaxiola

回答

0

GregorianCalender的无参构造函数使用Timzone.getDefault()作为它的时区。这是执行代码的JVM的时区(或换言之:本地时间)。所有日历字段(包括Calendar.HOUR)均基于此时区。

如果这与当地时间不同,则JVM处于不同的时区或JVM(或其主机计算机)配置不正确。