PHPでUnixタイムスタンプを使わないで日時を比較する

前回はUnixタイムスタンプを使いましたが、2038年問題があるので使わないほうがいいらしいです。DateTimeクラスだけでUnixタイムスタンプを使わないで日時を比較する書き方にします。

diffメソッドを使う

PHP: DateTime::diff - Manual
http://php.net/manual/ja/datetime.diff.php

DateIntervalオブジェクト を返すので、formatメソッドで分単位で比較できるように整形します。書き方を間違えなければマイナス値にはならないので下の書き方でいいかも。

<?php
$dt1 = new DateTime('2013-08-01 11:55');
$dt2 = new DateTime('2013-08-01 11:50');

$diff = $dt2->diff($dt1);
$diffMin = $diff->format('%r%d%h%i');

if ($diffMin >= 0 && $diffMin <= 5) {
    echo '5分以内です';
    } else {
    echo '5分以内じゃないです';
}

<?php
$dt1 = new DateTime(); // 現在日時
$dt2 = new DateTime('2013-08-01 11:50');

$diff = $dt2->diff($dt1);
$diffMin = $diff->format('%d%h%i');

if ($diffMin <= 5) {
echo '5分以内です';
}