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

Php 将存储的数据库日期更改为当前时区(strotime?),php,mysql,date,timezone,Php,Mysql,Date,Timezone,在向数据库添加记录时,我使用MySQLNOW()函数为列添加日期戳。但是,我的服务器位于地球的另一端,并且对我来说有不同的时区 当从数据库中取出此日期戳时,我需要将其值调整+8小时,以便在我的站点上显示“正确”的时间。但是,我首先需要strotimeit来创建一个可用的日期,然后strotimeit到+8小时,然后strotimeit将其更改为所需的格式,对吗 我尝试了多次语句迭代,但我可以得到30 Sep 07:35或01 Jan 00:00结果,而不是请求的30 Sep 15:35 该值以d

在向数据库添加记录时,我使用MySQL
NOW()
函数为列添加日期戳。但是,我的服务器位于地球的另一端,并且对我来说有不同的时区

当从数据库中取出此日期戳时,我需要将其值调整+8小时,以便在我的站点上显示“正确”的时间。但是,我首先需要
strotime
it来创建一个可用的日期,然后
strotime
it到+8小时,然后
strotime
it将其更改为所需的格式,对吗

我尝试了多次语句迭代,但我可以得到
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值的时区:

$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\u时区
您的\u时区
。您可以获得它们的列表。

您可以使用来调整datetime值的时区:

$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\u时区
您的\u时区
。您可以获得它们的列表。

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

SET time_zone = 'Europe/Amsterdam'
这是一个sql查询。您需要在连接后执行它

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

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

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

SET time_zone = 'Europe/Amsterdam'
这是一个sql查询。您需要在连接后执行它

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

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

这是一个很好的主意,可以防止将来出现此问题,谢谢+1不要设置与本地时区的连接,我建议将时间戳保存为UTC以消除歧义。为此,请使用
UTC\u TIMESTAMP()
而不是
NOW()
。这是一个防止将来出现此问题的好主意,谢谢+1不要设置与本地时区的连接,我建议将时间戳保存为UTC以消除歧义。为此,请使用
UTC\u TIMESTAMP()
而不是
NOW()