【PHP】DatetimeやCarbonの最大値/最小値取得、ソートを手軽に行う

やりたいこと

バッチの実行日時を比較したいので、複数日付の最大値/最小値の取得や、ソートを手軽に行いたい。

手順

日付を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

https://carbon.nesbot.com/docs/

カテゴリーPHP

コメントを残す

メールアドレスが公開されることはありません。