我正在使用workbench来访问数据库连接。
我的问题是当我在workbench中运行直接查询时结果是正确的但我使用PHP函数运行的查询相同,DateTime是不同的。 MySQL服务器时区:EST Linux服务器时区:EST
但结果出现在GMT时区。
所有数据录入记录都显示EST时间。
例如。 Mysql Workbench结果:datetime:19:00:00 PHP查询结果:22:00:00
答案 0 :(得分:1)
好吧,您可以将返回的数据转换为其他时区,因此如果您的时间存储在EST中但php显示为GMT,则可以将其转换为
这是一个例子
// now
$date = date_create('2017-10-09 07:00:00', timezone_open('Asia/Dubai'));
function getDateByTimeZone($date,$TimeZone='US/Eastern'){
date_timezone_set($date, timezone_open($TimeZone));
return $date->format('Y-m-d H:i:s');
}
echo getDateByTimeZone($date);
echo "<br />";
echo getDateByTimeZone($date,'GMT');
// Output
# 2017-10-08 23:00:00
# 2017-10-09 03:00:00
?>
假设$date
是您从Mysql返回的数据,在您的情况下是GMT,将其传递给该函数然后您将获得EST。
您还可以通过更改以下
来配置PHP.init文件date.timezone = "America/New_York"
并确保您的php服务器在正确的时区下运行
<?php
phpinfo();
?>
您会在Default timezone
中找到Date Section
根据该信息,您应该能够看到您的php服务器的默认时区。
如果您要为服务器中的单个网站设置默认时区,可以通过添加以下内容来编辑VirtualHost
<IfModule php7_module>
php_admin_value date.timezone "America/New_York"
</IfModule>
<IfModule php5_module>
php_admin_value date.timezone "America/New_York"
</IfModule>
如果您想为每个文件夹设置默认时区,可以通过添加以下内容来编辑 htaccess 文件
<IfModule !fcgid_module>
php_value date.timezone "America/New_York"
</IfModule>