2017-03-16 14 views
0

データベースから日付を取得するクエリがあります。私の問題は、データベースに格納されているものからの日付の変更です。MySQLデータベースから取得した日付の変更

データベースでは、日付は2017-01-31 23:01:00です。私はデータベースからそれを取得し、echoの日付は今は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

は、あなたのデフォルトのタイムゾーンを使用すると、以前に保存されたレコードは、まだ相殺される

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

を設定することができますapp.php。しかし、あなたが今から保存する人は正しいでしょう。

関連する問題