アプリでJSTの場合。
MySQLなんかもデフォルトだとシステムのタイムゾーンに依存しているので、Carbonを使わなくてもDBをJSTに統一する場合は設定をした方がいいかも。
Carbonはphpのdatetimeのラッパーですが、アプリ側でtimestampを押す時や、現在時刻との比較など便利です。
それはある日、tinkerでCarbonを使ってみた時。
>>> Carbon\Carbon::now()
=> Carbon\Carbon @1517950563 {#836
date: 2018-02-07 05:56:03.330975 Asia/Tokyo (+09:00),
}
よくよくみたら一週間くらいズレているやんけ!(2018-02-15 確認)
右のAsia/Tokyoはアプリ側(config/app.php)なんですが、Homestead側がダメっぽいです。
Homestead環境だとNTPサーバが正しく設定されてないようです。
$ date
Tue Feb 6 20:57:59 UTC 2018
localtime設定
ジャポンにする。
$ sudo ln -sf /usr/share/zoneinfo/Japan /etc/localtime
NTP設定
ジパングにする。
$ sudo ntpdate -v ntp.nict.jp
The program 'ntpdate' is currently not installed. You can install it by typing:
sudo apt install ntpdate
初期装備だとntpdateが入っていないらしい。
$ sudo apt install ntpdate
$ sudo ntpdate -v ntp.nict.jp
15 Feb 13:12:57 ntpdate[3191]: no servers can be used, exiting
exitingがexistingに空目するし、excitingにも見える。
なんか直ってたっぽい。
$ date
Thu Feb 15 13:13:08 JST 2018
tinkerで確認する。
>>> Carbon\Carbon::now()
=> Carbon\Carbon @1518671225 {#814
date: 2018-02-15 14:07:05.316495 Asia/Tokyo (+09:00),
}
ひとあんしん。
Eloquentで取ってくるレコードも変わってくるので重要。
アプリ周りのエラーにつながるのでHomestead初期装備のままだとあかんということか。