在向数据库添加记录时,我使用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));发布于 2014-09-30 14:50:48
您可以使用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。你可以得到他们的名单,这里。
发布于 2014-09-30 14:52:17
您最好在连接上设置时区,然后NOW()和and将返回正确的时区:
SET time_zone = 'Europe/Amsterdam'这是一个sql查询。您需要在连接之后执行它。
当然,这只适用于新的插入和更新,您需要修复现有的:
UPDATE table SET datetimeColumn = DATE_ADD(datetimeColumn, INTERVAL 8 HOUR)https://stackoverflow.com/questions/26123778
复制相似问题