我搜索了许多链接,但到目前为止,我找不到解决我的问题的解决方案。
我在Go Daddy上有一个网络托管,它正在返回PHP和MySQL的不同时间:
- php dateTime => 13/02/2018 17:10:50
- mysql dateTime => 13/02/2018 12:10:50
我已经将PHP时区设置为:
date_default_timezone_set('America/Sao_Paulo');
有人会知道一种调整MySQL时间的方法吗?
谢谢
我在此链接上找到了我的解决方案:
https://www.sitepoint.com/synchronize-php-mysql timezone-configuration/
实际上,我同步了我的PHP和MySQL时区。这是代码:
define('TIMEZONE', 'America/Sao_Paulo');
date_default_timezone_set(TIMEZONE);
$now = new DateTime();
$mins = $now->getOffset() / 60;
$sgn = ($mins < 0 ? -1 : 1);
$mins = abs($mins);
$hrs = floor($mins / 60);
$mins -= $hrs * 60;
$offset = sprintf('%+d:%02d', $hrs*$sgn, $mins);
// I already have a connection function
$return = pdo_mysql("SET time_zone='$offset';");
这是因为MySQL不会在DATETIME
类型上存储时区信息。
可能您的PHP脚本使用UTC 时区发送ISO8601日期字符串,因此MySQL忽略了时区,而仅存储UTC。
为避免这种情况,您可以使用跟踪时区的TIMESTAMP
类型。