簡體   English   中英

PHP MySQL查詢顯示錯誤的日期時間

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM