「Carbonでタイムゾーンとうまく付き合う」改め「LaravelのtimezoneとCarbonが異なってハマった話」です。
当初、Carbonのせいにしてたのですが、ただの設定ミスでした。
この記事を書いた時、config/app.php
は以下のようになってました。
app.php
'timezone' => 'UTC',
修正後
app.php
'timezone' => 'Asia/Tokyo',
LaravelのconfigはUTC、CarbonでAsia/Tokyo
で扱った場合
$dt = Carbon::create(2018, 3, 1, 0, 0, 0, 'Asia/Tokyo');
$dt->addMonth();
var_dump($dt);
これの出力結果はなんと3月29日です。
class Carbon\Carbon#5356 (3) {
public $date =>
string(26) "2018-03-29 00:00:00.000000"
public $timezone_type =>
int(3)
public $timezone =>
string(10) "Asia/Tokyo"
}
まとめ
タイムゾーン設定はちゃんとそろえましょう。