正在将存储的数据库日期更改为当前时区(strtotime?)


Changing stored database date to current timezone (strtotime?)

向数据库添加记录时,我使用MySQL NOW()函数对列进行日期戳。然而,我的服务器位于世界的一半,对我来说有一个不同的时区

当从数据库中提取此日期戳时,我需要将其值调整+8小时,以便在我的网站上显示"正确"的时间。然而,我首先需要strtotime来创建可用日期,然后strtotime到+8小时,然后strtotime才能将其更改为所需格式,对吧?

我已经尝试了多次语句迭代,但我可以得到30 Sep 07:3501 Jan 00:00的结果,而不能得到请求的30 Sep 15:35

该值以datetime格式存储在数据库中:2014-09-30 07:35:36

我尝试过很多失败的事情之一:

$chat_time = date("Y-m-d H:i:s", strtotime($chat_time));
$chat_time = strtotime("+8 hours");
$chat_time = date("d M, H:i", strtotime($chat_time));

您可以将DateTime()DateTimeZone()一起使用来调整日期时间值的时区:

$chat_time = new DateTime($chat_time, new DateTimeZone('DB_TIMEZONE'));
$chat_time->setTimezone(new DateTimeZone('YOUR_TIMEZONE'));
echo $chat_time->format("d M, H:i");

显然,您需要用有效值替换DB_TIMEZONEYOUR_TIMEZONE。你可以在这里得到他们的名单。

你最好在连接上设置时区,NOW()和类似的东西会返回正确的时区:

SET time_zone = 'Europe/Amsterdam'

这是一个sql查询。您需要在连接后执行它。

当然,这只适用于新的插入和更新,您还需要修复现有的:

UPDATE table SET datetimeColumn = DATE_ADD(datetimeColumn, INTERVAL 8 HOUR)