Laravel で
dd(`date`, now());
を実行すると、
"2019年 8月20日 火曜日 06時44分30秒 JST\n" Illuminate\Support\Carbon @1566337470^ {#9484 date: 2019-08-21 06:44:30.772943 Asia/Tokyo (+09:00) }
と表示されます。
実際は date
での 8 月 20 日 が正しい日時です。
タイムゾーン誤設定による 9 時間ズレはよくありますが、
時刻は同じで日にちが 1 日ずれています。
なにが疑われるでしょうか?
- PHP 7.3.8 on masOS (Homebrew)
- Laravel 5.8.32
- Carbon 2.23.1
config/app.phpのtimezoneは何になってますか?
ただ、Asia/Tokyoと出ているからあってそうなんですよね・・
手元では再現できませんでした。
他にコードはありませんか?1日addしているようなコード
date('Y-mi-d h:i:s')
もずれてますか?
あ、ずれてるって買いてありますね
Carbon::setTestNowで特定の日付に繊維させれるんですがそれではないですよね?
はい、 config/app.php では "Asia/Tokyo" です。
mikkame さんのご指摘のとおりでした!
コード全体とおしてまったく関係ない場所に Carbon::setTestNow() が 1 箇所書かれていて、その実行を引きずっていた結果でした。
特に、手許で動作させていたのはユニットテストのコードなので、なんとなくその中で完結しているものと勘違いしていました。
setTestNow() を一度呼び出した後の効力は、その後スクリプトが終了するまでずっと引き続くのですね。
大変勉強になりました。ありがとうございます!
次からで結構なのでコードはなるべく全体を提示するようにしてください。
回答者側もなるべく手元で再現確認してからアドバイスをしたいものですので。

回答1件
あなたの回答
tips
プレビュー