やりたいこと
バッチの実行日時を比較したいので、複数日付の最大値/最小値の取得や、ソートを手軽に行いたい。
手順
日付をDatetime型やCarbon型の配列にして、php標準の比較用関数を使用する。
Datetime
サンプルコード
<?php $datelist = [ new Datetime(), new Datetime('-1 year'), new Datetime('+1 week') ]; var_dump(max($datelist)); var_dump(min($datelist)); sort($datelist); var_dump($dateList);
結果
object(DateTime)#3 (3) { ["date"]=> string(26) "2020-05-20 15:11:44.880891" ["timezone_type"]=> int(3) ["timezone"]=> string(3) "UTC" } object(DateTime)#2 (3) { ["date"]=> string(26) "2019-05-13 15:11:44.880889" ["timezone_type"]=> int(3) ["timezone"]=> string(3) "UTC" } array(3) { [0]=> object(DateTime)#2 (3) { ["date"]=> string(26) "2019-05-13 15:11:44.880889" ["timezone_type"]=> int(3) ["timezone"]=> string(3) "UTC" } [1]=> object(DateTime)#1 (3) { ["date"]=> string(26) "2020-05-13 15:11:44.880876" ["timezone_type"]=> int(3) ["timezone"]=> string(3) "UTC" } [2]=> object(DateTime)#3 (3) { ["date"]=> string(26) "2020-05-20 15:11:44.880891" ["timezone_type"]=> int(3) ["timezone"]=> string(3) "UTC" } }
Carbon
Datetimeを拡張したCarbon型は、比較処理を継承しているので同様に処理できる。
サンプルコード
$carbonList = [ Carbon::now(), Carbon::today(), Carbon::yesterday() ]; echo max($carbonLite)."\n"; echo min($carbonLite)."\n"; sort($carbonList); echo $carbonList[0];
結果
2020-05-13 16:07:30 2020-05-12 00:00:00 2020-05-12 00:00:00