设置时区问题

时间:2017-06-15 18:57:39

标签: php mysql pdo

我想将我的网站的时区设置为欧洲/布鲁塞尔。 我做了一个小的php文件:

<?php
$DT = new DateTime($timestamp,new DateTimeZone('UTC'));
$DT->setTimezone(new DateTimeZone('Europe/Brussels'));
$date = $DT->format('Y-m-d H:i:s');
?>

我已将此文件包含在所有其他php文件中。 我遇到的问题是我在我的mysql上加了一个时间戳。 比在另一个文件中,我用一个准备好的语句PDO来调用这个时间戳。 但即使我在每个页面上设置我使用日期的新默认时间也无法调整。

由于我的提供商的限制我无法更改mysql的时区,他们建议我使用上面的脚本。但这不起作用。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您可能已在PHP中更改了默认时区,但您也需要为mysql更改它。 MySQL中生成的时间戳将基于为MySQL设置的时区。

以下是如何将MySQL时区与PHP时区同步的示例:

<?php
$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);

//Your DB Connection - sample
$db = new PDO('mysql:host=localhost;dbname=test', 'dbuser', 'dbpassword');
$db->exec("SET time_zone='$offset';");