一尘不染

在PHP / MySQL中将日期时间存储为UTC

mysql

我所读到的有关将时间转换为用户时区的所有信息都说,最好的方法是在UTC中存储日期和时间,然后将用户的时区偏移量添加到该时间。

如何以UTC时间存储日期?我使用MySQL DATETIME字段。

当在我的PHP代码中向MySQL添加新记录时,我将用于now()插入MySQL DATETIME。

我需要使用不同于now()存储UTC时间的其他方法吗?


阅读 265

收藏
2020-05-17

共1个答案

一尘不染

MySQL: UTC_TIMESTAMP()

以’YYYY-MM-DD
HH:MM:SS’或YYYYMMDDHHMMSS.uuuuuu格式返回当前UTC日期和时间作为值,具体取决于该函数是在字符串还是数字上下文中使用

PHP: gmdate()

PHP中date_default_timezone_set()也使用PHP来设置脚本的当前时区。您可以将其设置为客户时区,以便所有格式设置功能都以当地时间返回时间。

实际上,尽管我很难做到这一点,但总是遇到一些麻烦。例如。MySQL返回的时间信息未格式化为“
UTC”,因此如果您不小心,strtotime会将其转换为本地时间。我很想知道是否有人对此问题有一个
可靠的 解决方案,当日期跨越媒体边界时,该解决方案不会中断(HTTP-> PHP-> MySQL和MySQL-> PHP->
HTTP),同时考虑到XML和RSS /原子。

2020-05-17