首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将存储的数据库日期更改为当前时区(strtotime?)

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

Stack Overflow用户
提问于 2014-09-30 14:48:35
回答 2查看 57关注 0票数 0

在向数据库添加记录时,我使用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

我尝试过的许多事情中,有一件是失败的:

代码语言:javascript
复制
$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));
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-30 14:50:48

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

代码语言:javascript
复制
$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。你可以得到他们的名单,这里

票数 3
EN

Stack Overflow用户

发布于 2014-09-30 14:52:17

您最好在连接上设置时区,然后NOW()和and将返回正确的时区:

代码语言:javascript
复制
SET time_zone = 'Europe/Amsterdam'

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

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

代码语言:javascript
复制
UPDATE table SET datetimeColumn = DATE_ADD(datetimeColumn, INTERVAL 8 HOUR)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26123778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档