记一次严重 bug:GMT 时区问题

本贴最后更新于 1305 天前,其中的信息可能已经渤澥桑田

问题

我们在网站上编辑生日时候 1989 左右的日期会莫名其妙少了一天如图所示
rr7vkh5n8m.gif

1989-05-27 00:00:00 会变成 1989-05-26 23:00:00

莫名其妙少了一个小时,要不是服务器在我这,我都怀疑是不是买到缅甸服务器了
试了许多种方法数据库 url 链接加上时区
image.png
数据库修改时区为东八区等等 全都无效
最后修改了
image.png
突然生效了 脑袋懵掉了,为什么 GMT+8 明明代表的是东八区,为何会突然少了一个小时?

原因

根据网上找到的说法

Daylight Saving Time 中文名叫“夏令时”,一般在天亮早的夏季人为将时间调快一小时,可以使人早起早睡,减少照明量,以充分利用光照资源,从而节约照明用电。中国 1986-1991 年实行夏令时,1992 年废除。

没错,就是这么坑

结论

GMT-8 是东八区,北京时间和东八区一致。
Asia/Shanghai 是已地区命名的地区标准时,在中国叫 CST。这个地区标准时会兼容历史各个时间节点。中国 1986-1991 年实行夏令时,夏天和冬天差 1 个小时,Asia/Shanghai 会兼容这个时间段。
1992 年以后,在中国,GMT-8 和 Asia/Shanghai 是一样的时间,1986-1991 之间,夏天会有一小时时差。
使用 Asia/Shanghai 时会处理夏令时。使用 GMT+8 时不会处理夏令时,因为 GMT+8 不能确定是哪个国家,也就无法使用各个国家规定的夏令时了。

作者:windvibra
链接:windvibra 的辣鸡博客

  • 一些有用的避坑指南。

    69 引用 • 93 回帖
  • 时区
    4 引用 • 1 回帖
  • GMT
    1 引用
1 操作
windvibra 在 2021-04-26 15:58:35 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...