我非常简单的代码:
public static void main(String[] args)
{
TimeZone tz = TimeZone.getTimeZone("Europe/Moscow");
System.out.println(tz);
}
当我在我的机器上本地运行它时,我得到:
sun.util.calendar.ZoneInfo[id="Europe/Moscow",offset=10800000,dstSavings=0,useDaylight=false,transitions=79,lastRule=null]
当部署在 unix 测试机器上时,我得到:
sun.util.calendar.ZoneInfo[id="Europe/Moscow",offset=14400000,dstSavings=0,useDaylight=false,transitions=78,lastRule=null]
如此不同的偏移量,似乎前者正在使用夏令时,而后者没有,但useDaylight
字段都设置为 false。可疑的是转换的数量,在我的本地计算机上显示,与测试计算机相比,它经历了额外的转换。知道吗?
您可以使用不同的 Java 构建。其中一个支持DST,另一个不支持。在俄罗斯,DST不再改变,也许一个Java版本很旧并且不知道它。