关于冬令时夏令时切换时的问题解决

最近在美国芝加哥地区部署了若干台游戏服务器,上线一段时间后发现平时凌晨3点重置玩家每日数据的时间变成了4点,往后推迟了1小时,当时怀疑是不是出BUG了,查了代码发现这里有猫腻:

public static final long GMT_8 = TimeZone.getDefault().getRawOffset();

这里的时区是America/Los_Angeles,走的是夏令时,夏令时时区会比平常的时间走的快,所以虽然是3点,实际上对应的夏令时时间是4点。

什么是夏令时,冬令时:

很简单,我们平常用的格林威治标准时间(又译:格林尼治标准时间,Greenwich Mean Time),到了三月,就在格林威治标准时的基础上拨快一个小时,新的时间就是夏令时。到了十月,又在夏令时的基础上拨慢一个小时,就形成冬令时了,说的再简单点,冬令时就是格林威治标准时。

  美国时间一般被认为是美国本土的时间。美国本土横跨西五区至西十区,共六个时区,每个时区对应一个标准时间。从东向西分别为东部时间(EST)(西五区时间)、中部时间(CST)(西六区时间)、山地时间(MST)(西七区时间)、太平洋时间(西部时间)(PST)(西八区时间)、阿拉斯加时间(AKST)(西九区时间)和夏威夷时间(HST)(西十区时间),按照“东早西晚”的规律,各递减一小时。美国从每年3月的第二个星期日至11月的第一个星期日采用夏令时,夏令时比正常时间早一小时。

<

你可能感兴趣的:(服务器线上问题排查,java,linux)