Carbonクラス
Javaなどの言語を使っているとCalenderクラスやDateクラスなど、使う用途によって色々使い分けが必要で日付を扱うことに苦手意識がありました。
ですが、PHPでは日付に関してCarbonクラスさえ理解していれば、問題ありません!
参考にしたサイト:https://blog.capilano-fw.com/?p=867
色々なサイトを確認しましたが、こちらのサイトが紹介している種類が一番多く、索引としてページ内検索をかけて利用するのに重宝しています。
筆者が実際に使用したメソッドは下記になります
日付の取得
$today = new Carbon('today');
$today = Carbon::today();
$today = Carbon::today('Asia/Tokyo') //タイムゾーン付きの取得
同様にyesterday
とtomorrow
も使うことができます。
$today = (new Carbon('today'))->toDateString();
$today = Carbon::today()->toDateString();
$today = Carbon::today('Asia/Tokyo')->toDateString(); //タイムゾーン付きの取得
どれも→toDateString()
をメソッドチェーンの形で繋げるだけですが、一番上の例は個人的に少し見づらく感じるのであまりお勧めしません。
日付の比較
$first = new Carbon('2021-01-01 13:00:00');
$second = new Carbon('2021-01-01 14:00:00');
//より前(条件に=を含まない)
if($first->lessThan($second)){
echo '$first が前の時間です。';
}
//以前(条件に=を含む)
if($first->lessThanOrEqualTo($second)) {
echo '$first が同じか前の時間です。';
}
参考サイトで表示されている、ItやIteはなぜかエラーになってしまって使えませんでしたので、lessThanを使用しました。(利用環境:Laravel8.x)
レスポンスの時の形式を変更する
データベースから値を取得し、そのままのcreated_at
やupdated_at
をレスポンスしようとすると00000Z
のような形式になり、なんだかうまく日付が反映されません。
そんなときには、取得している日付情報をISO8601形式の日付にフォーマットしましょう
$datetime->toIso8601String();