2017-03-16 111 views
0

我有一個查詢從我的數據庫中檢索日期。我的問題是從數據庫中存儲的日期更改。從MySQL數據庫檢索時的更改日期

在數據庫中的日期是2017-01-31 23:01:00。當我從數據庫檢索它時,它現在是2017-02-01 01:01:00

什麼是造成這種變化,我該如何解決它?

我的代碼如下。該代碼是在Laravel控制器類:

$test_data = UserTest::where('test_id', '=', $id) 
    ->where('user_id', '=', $userId) 
    ->select('date') 
    ->get(); 

echo $test_data[0]->date; // outputs: 2017-02-01 01:01:00 

編輯:在Laravel config/app.php我的時區設置爲:'timezone' => 'Australia/Melbourne',。我的PHP.ini有date.timezone = UTC

+4

幾乎肯定是一個時區差異。你在數據庫中使用什麼時區?什麼是您的PHP的默認時區設置? –

+0

@MarkBaker如何讓PHP不改變時區?存儲在數據庫中的所有日期都是用戶本地的。也就是說,這些是醫學測試,日期代表當地時間該患者進行該測試的時間。 PHP不應該改變日期,直接從數據庫中取出。 –

+0

最好將日期作爲UTC存儲在數據庫中,並且只顯示相應的時區,或者還需要確保將時區存儲在數據庫中,並使用它確保日期正確顯示 –

回答

0

在配置/ app.php您可以設置默認的時區

'timezone' => 'Australia/Sydney', // or simply 'UTC' 

以前保存仍然會被抵消的記錄。但是從現在開始你節省的人是正確的。