php - 时间戳/时区/PHP/MySQL

标签 php mysql timezone

我将 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/

相关文章:

php - 回复按钮未链接到 URL

java - 严重: java. sql.SQLException:字段 'columnname'没有默认值

mysql - JDBC/MySQL : Save timestamp always using UTC

java - java.util.TimeZone 夏令时信息如何更新?

php - 如何获得 openssl_decrypt 二进制输出?

php - 如何检查一个对象是否为空?

php - 不同环境使用不同的 security.yml 文件

php - SQL时区问题

sql - 优化sql查询

date - 找出时区偏移