やりたいこと
バッチの実行日時を比較したいので、複数日付の最大値/最小値の取得や、ソートを手軽に行いたい。
手順
日付を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

