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
です。設定/で
ほぼ確実にタイムゾーンの違いです。あなたのデータベースの日付にはどのようなタイムゾーンを使用していますか?また、PHPのデフォルトのタイムゾーン設定は何ですか? –
@ MarkBakerどのようにPHPをタイムゾーンを変更しないようにすることができますか?データベースに格納されているすべての日付は、ユーザーにとってローカルです。つまり、これらは医療検査であり、日付はこの検査が患者の現地時間で行われた時を表します。 PHPは日付を変更するべきではなく、データベースからまっすぐに抜き出すべきです。 –
データベースに日付をUTCとして保存し、適切なタイムゾーンのみを表示する方が良い場合や、データベースにタイムゾーンを保存して、日付が正しく表示されるようにする必要がある場合もあります。 –