ここでは、DateTime で管理された日時データの比較および差分を抽出するサンプルコードを掲載しています。
スポンサーリンク
比較演算子で日時を比較する
PHP 5.2.2 以降では、比較演算子での日時の比較ができるようになりました。
$date1 = new DateTime(); $date1->setDate(2010, 11, 10); // 日付を設定 $date1->setTime(12, 10, 11); // 時間を設定 $date2 = new DateTime(); $date2->setDate(2010, 11, 10); // 日付を設定 $date2->setTime(12, 10, 10); // 時間を設定 var_dump($date1 == $date2); // true
ポイント
- 比較演算子は ‘ == ‘ を使うこと。’ === ‘ では、常に false がリターンされる
- 日付のみではなく、時間もすべて一致している必要がある
DateTime::diff で日時の差分を抽出する
PHP 5.3.0 以降では、DateTime::diff メソッドを使って日時の差分を取得できるようになりました。
$date1 = new DateTime(); $date1->setDate(2010, 11, 15) ->setTime(12, 10, 10); $date2 = new DateTime(); $date2->setDate(2010, 11, 15) ->setTime(12, 10, 10); $interval = $date1->diff($date2); var_dump($interval->invert); // 0 /* * $ret * -------------------------------------- * date1 が大きい場合: 1 * date2 が大きい場合: 0 * date1 と date2 が等しい場合:0 */
invert プロパティでは、比較した日時が大きいのか等しいかまでは判断ができません。invert プロパティのみではなく、その他のプロパティが 0 であるかも確認する必要があります。日時が等しい場合は、以下のプロパティがすべて 0 となります。
var_dump($interval->y); // 年の差分 var_dump($interval->m); // 月の差分 var_dump($interval->d); // 日の差分 var_dump($interval->h); // 時の差分 var_dump($interval->i); // 分の差分 var_dump($interval->s); // 秒の差分