Linux如何处理DST(夏令时?

时间:2014-10-22 08:29:47

标签: linux database dst rhel

linux如何处理夏令时(DST)

swich是否会立即发生,就像3'o时钟瞬间切换到2'o时钟一样? 或者变化缓慢 我问你这个因为我在我的服务器上有大量的日期基础,如果这个swich在数据库中的一个小时后立即发生,将会被写入

我该如何解决这个问题?

4 个答案:

答案 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时间基础。