ど素人から毛を生やす。<延>

[PHP]日時の差分取得はdate_diff()でなくタイムスタンプ計算が○

Web > PHP 2025年7月9日(最終更新:3日前)

どもです。
ある日時と現在日時の比較を行い、差がX分以上か以下かで処理を分岐させる。

取り敢えず2つの日時をDateTimeで宣言するとして、DateTimeの差分を求める関数にはdate_diff()があります。

$checkDateTime = new DateTime('@1693463796'); //@はタイムスタンプを指す
$nowDataTime   = new DateTime();

print_r(date_diff($nowDataTime, $checkDateTime));

//結果
//DateInterval Object
//(
//    [y] => 1
//    [m] => 10
//    [d] => 8
//    [h] => 18
//    [i] => 43
//    [s] => 11
//    [invert] => 1
//    [days] => 677
//)

おおっと
これ、時分秒単位の差分を取得しようとすると、ここからかなり計算しなくてはいけないですね…
差分を求める関数との触れ込みでしたが、今回使うには違う気がします。

で、色々調べてみましたが、原始的にタイムスタンプ同士を計算するのが結局正解ぽいですね。
ただしstrtotime()は2038年問題があるので結局はDateTimeクラスを噛ませるべきで、
DateTime::getTimestamp()も戻り値がint型なのは変わらないのでformat('U')にすべきだから…

$checkDateTime = (new DateTime('2025-07-09 10:00:00', new DateTimeZone('Asia/Tokyo')))->format('U');
$nowDataTime   = (new DateTime())->format('U');

echo floor(($nowDataTime - $checkDateTime)/60);

これが現状の最適解かな。

この記事は役に立ちましたか?
  • _(:3」∠)_ 面白かった (0)
  • (・∀・) 参考になった (0)
  • (`・ω・´) 役に立った (0)