我将 Apache 服务器和 PHP 设置为 date_default_timezone_set("America/Los_Angeles")。
在 MySQL 中,我将 TIMESTAMP 字段保存为 CURRENT_TIMESTAMP,其中一些额外保存为“更新时 CURRENT_TIMESTAMP”。
我这样做的方式正确还是我失去了时间戳的全部意义?我希望用户能够选择自己的时区,但它似乎将本地时区保存到 MySQL,而不是通用引用点。
我是否应该将服务器时区设置为 UTC 并在 PHP date_default_timezone_set("America/Los_Angeles") 或任何用户时区中设置,然后使用 CURRENT_TIMESTAMP 以外的其他内容将值保存到 MySQL 字段(这似乎取决于php 设置)?谢谢!
最佳答案
理想情况下,您希望数据库以 UTC 格式存储数据,这样数据就不会锚定到任何特定地理位置。来自用户的传入数据会根据用户的时区进行转换,并且您显示的任何内容也可以同样转换回用户的首选时区。
有些系统甚至会在 HTML 中将 UTC 时间发送到客户端,但会使用 JavaScript Hook 的内容来标记元素,并使用适当的本地时间在客户端重新呈现。
最好有一个用户指定的设置,该设置保留在用户记录和/或 session 中,用于定义应对他们指定或显示的日期和时间进行哪些转换(如果有)。
还值得注意的是,TIMESTAMP
字段仅限于 2038 年,因此它们已经存在于借来的时间中。最好使用更标准的 DATETIME
字段,它具有更广泛的可接受值。
关于php - 时间戳/时区/PHP/MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43641814/