我有一个PHP脚本正在为MySQL会话设置时区。我已经检查了输出,并正确发送了偏移量+1:00
(DST中的欧洲/伦敦)。但是,当我读取放置在数据库中的时间戳时,它晚了八个小时。为什么会这样呢?
MySQL服务器将时间戳设置为默认值。
最佳答案
更新数据库参数:
SET GLOBAL time_zone = 'Europe/London';
// OR: SET time_zone = 'Europe/London';
// OR: SET @@session.time_zone = 'Europe/London';
直接在请求中更新时区:
SELECT ..., CONVERT_TZ(field, 'GMT', 'Europe/London') FROM ...
在条目文件(如
index.php
)中定义正确的时区:date_default_timezone_set('Europe/London');
另外,它可以在服务器(示例,Ubuntu)上完成:
sudo timedatectl set-timezone Europe/London
# do not forget to restart all services: nginx|Apache, mysql, ...