Java Calendar.get(Calendar.HOUR)返回的值与系统时钟时间不同?
我的系统时钟当前显示时间为上午9:54。但是,如果我执行以下操作:Java Calendar.get(Calendar.HOUR)返回的值与系统时钟时间不同?,java,serialization,Java,Serialization,我的系统时钟当前显示时间为上午9:54。但是,如果我执行以下操作: Calendar cal = Calendar.getInstance(); System.out.println("Now: " + cal.get(Calendar.AM_PM) + " , " + cal.get(Calendar.HOUR) + " , " + cal.get(Calendar.MI
Calendar cal = Calendar.getInstance();
System.out.println("Now: "
+ cal.get(Calendar.AM_PM) + " , "
+ cal.get(Calendar.HOUR) + " , "
+ cal.get(Calendar.MINUTE));
我得到输出:
Now: 0 , 7 , 53
因此,AM/PM值正确,分钟数正确,但小时返回的时间与我的系统时钟不同
这是什么原因造成的?如果这有什么区别的话,我现在使用Linux。我遇到了问题,这是我的错 我正在序列化这个类,将它保存到一个文件中,然后取消序列化并在每次程序启动时从文件中加载它 我的类的日历成员每次也被序列化并从文件中加载,这就是为什么自文件上次保存时的上午7点起小时没有更新:
public class Foo implements Serializable
{
private final Calendar cal = Calendar.getInstance();
}
我已将此变量更改为静态变量,即:
public class Foo implements Serializable
{
private final static Calendar cal = Calendar.getInstance();
}
因为静态变量似乎没有被序列化,现在一切都正常了
编辑:进一步的测试表明,即使您在程序开始时加载日历,其时间也不会每秒更新,因此,如果您加载程序,5分钟后尝试获取当前时间,您将获得5分钟前的时间。解决方法是在检查时间之前始终正确获取实例。您是否考虑过使用
日历。一天中的小时数
?小时数
和一天中的小时数
为我获取正确的结果。您是否尝试过检查区域设置
?这可能与您的时区设置有关。