PHP + MySQL构建服务器时区不可知脚本?

时间:2011-02-05 23:38:04

标签: php mysql

在构建PHP应用程序时,我总是难以尝试使用服务器时间和时区来完成所有操作。

我的大多数记录中通常都有一个简单的类似时间戳的字段,它没有更新 - 仅供参考静态。我用它来跟踪事件发生的时间,用户注册的时间,创建评论的时间等。

我一直在尝试遵循使用Datetime字段存储此值的最佳做法。问题在于,当使用不同的服务器时,它们通常具有不同的时区,因此除非我添加更多代码来抵消差异,否则日期时间甚至不会匹配。使用MySQL复制和NOW()查询时,这也是一个问题,因为它们通常是滞后的。

我想知道我是否应该回到使用整数,因为他们似乎并不关心时区,只需要设置服务器时钟。失败的是,所有那些MySQL日期/时间函数(我从不使用)都无法使用,这可能是将来的一个问题。好处是我可以通过回到4字节而不是日期时间来将存储空间减半。

人们还提到,整数只能在2037年之前运作 - 为什么这是一个问题?谁希望在2037年使用PHP + MySQL?

我有什么遗失的吗?以Unix时间戳等不可知的方式存储引用时间是否更好?

1 个答案:

答案 0 :(得分:2)

我在所有数据库工作中使用日期/时间字段,但将所有内容存储在GMT中。几乎是我的代码获得它的第一个机会,它将一些内容转换为GMT,并以gmt等方式完成所有内部数学运算。我将其转换回GMT到本地时间的唯一时间是向用户显示。 PHP有unixtime(),它是GMT,加上gmstrftime和gmdate,几乎是你需要的任何东西。

相关问题