在构建 PHP 应用程序时,我总是无法尝试让所有内容都与服务器时间和时区正确配合。
我的大部分记录上通常都有一个类似时间戳的简单字段,该字段未更新 - 仅供引用。我用它来跟踪事件发生的时间、用户注册的时间、创建评论的时间等。
我一直在尝试遵循使用日期时间字段存储此值的最佳做法。问题是,当使用不同的服务器时,它们通常具有不同的时区,因此日期时间不匹配甚至接近,除非我添加更多代码来抵消差异。这在使用 MySQL 复制和 NOW()
查询时也可能是一个问题,因为它们通常是滞后的。
我想知道我是否应该重新使用整数,因为它们似乎不关心时区,只需要设置服务器时钟。缺点是所有那些 MySQL 日期/时间函数(我从不使用)都无法使用,这在将来可能会成为问题。好处是我可以通过返回到 4 字节整数而不是日期时间来将存储空间减少一半。
人们还提到整数只能工作到 2037 年 - 为什么这是个问题?谁期望在 2037 年使用 PHP + MySQL?
有什么我遗漏的吗?像 Unix 时间戳一样以不可知的方式存储引用时间是否更好?
最佳答案
我在所有数据库工作中都使用日期/时间字段,但所有内容都以 GMT 格式存储。几乎是我的代码获得的第一个机会,它将某些东西转换为 GMT,并在 gmt 等中进行所有内部数学运算。我唯一一次将它从 GMT 转换回本地时间是在向用户显示时。 PHP 具有 unixtime()(格林威治标准时间)、gmstrftime 和 gmdate,几乎所有您需要的东西。
关于PHP + MySQL 构建与服务器时区无关的脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4910451/