[英]PHP MySQL query shows wrong datetime in result
我正在使用工作台訪問數據庫連接。
我的問題是,當我在工作台中運行直接查詢時,結果是正確的,但使用PHP函數運行的同一查詢中的DateTime是不同的。 MySQL服務器時區:EST Linux服務器時區:EST
但結果是格林尼治標准時間(GMT)時區。
所有數據輸入記錄均顯示EST時間。
例如。 Mysql Workbench結果:datetime:19:00:00 PHP查詢結果:22:00:00
好吧,您可以將返回的數據轉換為其他時區,因此,如果您的時間存儲在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();
?>
您將從該信息的“ Date Section
找到“ Default timezone
,您應該能夠看到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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.