PHP和MySQL之间的时差

时间:2018-02-13 19:13:33

标签: php mysql time timezone

我搜索了很多链接,但到目前为止,我找不到解决问题的方法。

我在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时间的方法吗?

由于

2 个答案:

答案 0 :(得分:1)

我在这个链接找到了我的解决方案:

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';");

答案 1 :(得分:0)

这是因为MySQL不会在DATETIME类型上存储时区信息。

可能您的PHP脚本正在发送带有UTC +时区的ISO8601日期字符串,因此MySQL会忽略时区并仅存储UTC。

为避免这种情况,您可以使用跟踪时区的TIMESTAMP类型。