向数据库添加记录时,我使用MySQL NOW()
函数对列进行日期戳。然而,我的服务器位于世界的一半,对我来说有一个不同的时区
当从数据库中提取此日期戳时,我需要将其值调整+8小时,以便在我的网站上显示"正确"的时间。然而,我首先需要strtotime
来创建可用日期,然后strtotime
到+8小时,然后strtotime
才能将其更改为所需格式,对吧?
我已经尝试了多次语句迭代,但我可以得到30 Sep 07:35
或01 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_TIMEZONE
和YOUR_TIMEZONE
。你可以在这里得到他们的名单。
你最好在连接上设置时区,NOW()
和类似的东西会返回正确的时区:
SET time_zone = 'Europe/Amsterdam'
这是一个sql查询。您需要在连接后执行它。
当然,这只适用于新的插入和更新,您还需要修复现有的:
UPDATE table SET datetimeColumn = DATE_ADD(datetimeColumn, INTERVAL 8 HOUR)