时间戳/时区/ PHP / MySQL

时间:2017-04-26 18:23:35

标签: php mysql timezone

我将Apache服务器和PHP设置为date_default_timezone_set(“America / Los_Angeles”)。

在MySQL中,我使用CURRENT_TIMESTAMP保存TIMESTAMP字段,其中一些EXTRA保存为“更新CURRENT_TIMESTAMP”。

我是以正确的方式做到这一点还是我失去了TIMESTAMPS的全部意义?我希望用户能够选择自己的时区,但似乎它将本地时区保存到MySQL而不是通用参考点。

我应该将服务器时区设置为UTC并在PHP中设置date_default_timezone_set(“America / Los_Angeles”)或用户时区,然后使用除CURRENT_TIMESTAMP以外的其他内容将值保存到MySQL字段(这似乎取决于php设置)?

谢谢!

1 个答案:

答案 0 :(得分:1)

理想情况下,您希望数据库以UTC格式存储数据,这样它就不会锚定到任何特定的地理位置。来自用户的传入数据将根据用户的时区进行转换,您显示的任何内容同样可以转换回用户的首选时区。

有些系统甚至可以将HTML时间发送到HTML中的客户端,但是使用JavaScript挂钩的内容标记元素,并使用适当的本地时间重新呈现客户端。

最好有一个用户指定的设置,该设置会持久存储在他们的用户记录和/或会话中,以确定应该对他们指定或显示的日期和时间进行哪些转换(如果有)。

值得注意的是,TIMESTAMP字段仅限于2038年,因此他们已经在借来的时间生活。最好使用更标准的DATETIME字段,该字段具有更广泛的可接受值范围。