我所读到的有关将时间转换为用户时区的所有信息都说,最好的方法是在UTC中存储日期和时间,然后将用户的时区偏移量添加到该时间。
如何以UTC时间存储日期?我使用MySQL DATETIME字段。
当在我的PHP代码中向MySQL添加新记录时,我将用于now()插入MySQL DATETIME。
now()
我需要使用不同于now()存储UTC时间的其他方法吗?
MySQL: UTC_TIMESTAMP()
UTC_TIMESTAMP()
以’YYYY-MM-DD HH:MM:SS’或YYYYMMDDHHMMSS.uuuuuu格式返回当前UTC日期和时间作为值,具体取决于该函数是在字符串还是数字上下文中使用
PHP: gmdate()
gmdate()
PHP中date_default_timezone_set()也使用PHP来设置脚本的当前时区。您可以将其设置为客户时区,以便所有格式设置功能都以当地时间返回时间。
date_default_timezone_set()
实际上,尽管我很难做到这一点,但总是遇到一些麻烦。例如。MySQL返回的时间信息未格式化为“ UTC”,因此如果您不小心,strtotime会将其转换为本地时间。我很想知道是否有人对此问题有一个 可靠的 解决方案,当日期跨越媒体边界时,该解决方案不会中断(HTTP-> PHP-> MySQL和MySQL-> PHP-> HTTP),同时考虑到XML和RSS /原子。