我非常简单的代码:
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 版本。其中一款支持夏令时,另一款则不支持。在俄罗斯,夏令时不再发生变化,也许某个 Java 版本已经过时并且不知道这一点。
关于Java TimeZone 实例在不同环境中运行时显示不同的偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41502536/