我在Windows和Solaris计算机上运行相同的Java代码。部分代码会产生不同的结果:
Calendar cd = Calendar.getInstance();
int hour = cd.get(Calendar.HOUR_OF_DAY);
int off = cd.get(Calendar.ZONE_OFFSET)/3600/1000;
System.out.println("current hour " + hour + ", zone offset " + off);
如果我在当地时间16:15运行此代码,Windows机器将返回16作为小时,区域偏移量为2(我在GMT + 2时区,此时夏令时已开启)。在Solaris上,我得到15小时和相同的区域偏移。 Solaris上的“date”命令显示时间正确并显示正确的时区。 Solaris运行Java 1.4,Windows运行1.5,但我不确定这是否有所不同。任何想法为什么结果都不同?
答案 0 :(得分:4)
我猜想有一台机器没有配置夏令时。
查询字段Calendar.DST_OFFSET
应该以毫秒为单位返回夏令时偏移量。