linux如何处理夏令时(DST)
swich是否会立即发生,就像3'o时钟瞬间切换到2'o时钟一样? 或者变化缓慢 我问你这个因为我在我的服务器上有大量的日期基础,如果这个swich在数据库中的一个小时后立即发生,将会被写入
我该如何解决这个问题?
答案 0 :(得分:4)
我问你这个因为我在我的服务器上有大量的日期基础,如果这个swich在数据库中的一个小时后立即发生,将会被写入
这表明您正在将本地时间写入数据库。无论Linux如何处理它(我相信它会像你说的那样,基本上就是时区的工作方式),你几乎可以肯定不应该将本地时间写入数据库。
如果您改为编写UTC时间,则无需关心系统设置的时区或DST效果。你不会得到一个奇怪的情况,即在事件Y之后发生的事件X实际上是用较早的时间记录的,也不会有任何含糊之处。您可以根据需要显示数据时将存储时间调整为当地时区 - 您可以在任何时区进行此操作。
答案 1 :(得分:2)
立即改变:
Sun 26 Oct 03:59:56 EEST 2014
Sun 26 Oct 03:59:57 EEST 2014
Sun 26 Oct 03:59:58 EEST 2014
Sun 26 Oct 03:59:59 EEST 2014
Sun 26 Oct 03:00:00 EET 2014
Sun 26 Oct 03:00:01 EET 2014
Sun 26 Oct 03:00:02 EET 2014
Sun 26 Oct 03:00:03 EET 2014
Sun 26 Oct 03:00:04 EET 2014
Sun 26 Oct 03:00:05 EET 2014
Sun 26 Oct 03:00:06 EET 2014
Sun 26 Oct 03:00:07 EET 2014
Sun 26 Oct 03:00:08 EET 2014
这是在测试机上完成的,并立即切换。
答案 2 :(得分:0)
一般情况下,建议使用没有DST的协调世界时(UTC)来存储时间数据。
进出数据库时从本地时区(和其他语言环境问题)转换。否则,您必须在数据库中(显式或隐式)存储时区。处理转换似乎一开始很烦人,但是当你开始与不同时区的用户打交道时,你无论如何都必须这样做。因此,从长远来看,拥有标准的DST时间非常方便。
关于你目前的问题,我不知道如何处理它。由于我一直处理UTC数据,所以它不会出现。
答案 3 :(得分:0)
我想你可能会尝试:
为您添加触发器,以便将DST敏感数据转换为 UTC时间基础。