PHP のドキュメントを見ると、オブジェクトの次の 2 つのメソッドのDateTime
両方が問題を解決できるようです。
- 日時::差分: 違いを調べて、どちらがより古いかを判断します。
- DateTime::getTimestamp: UNIX タイムスタンプを取得して比較します。
これらの方法は両方とも、ドコバージョン5.3以上で利用可能であると書かれています(そして、当然ながら、それらを呼び出そうとすると、存在しないことがわかります)。5.2.8の特定のドキュメントが見つからないので、私のバージョンに同等のメソッドがあるかどうかはわかりません。グーグルで検索問題を調べて、さまざまな解決策を見つけましたが、どれも私の非常に単純な要件を満たしていませんでした。
- 2 つの DateTime オブジェクトを比較するにはどうすればよいですか?
- 以前の PHP バージョンのドキュメントはどこにありますか? 具体的にはバージョン 5.2.8 ですか?
コンテキストとして、次のコードがあります。
$st_dt = new DateTime(verifyParam ('start_date'));
$end_dt = new DateTime(verifyParam ('end_date'));
// is the end date more ancient than the start date?
if ($end_dt < $start_dt)
どうやらこの関数には比較演算子がないようです。
編集
どうやら私の仮定は完全に間違っていたようです (これをとても効果的に説明してくれた Milen に感謝します)。比較演算子があり、問題なく動作します。時々、コンパイラが本当に恋しくなります。バグは上記のコードにありますが、私よりもずっと早く見つけられると思います :)。
ベストアンサー1
以下は、DateTime クラスに比較演算子があることを確認できるようです。
dev:~# php
<?php
date_default_timezone_set('Europe/London');
$d1 = new DateTime('2008-08-03 14:52:10');
$d2 = new DateTime('2008-01-03 11:11:10');
var_dump($d1 == $d2);
var_dump($d1 > $d2);
var_dump($d1 < $d2);
?>
bool(false)
bool(true)
bool(false)
dev:~# php -v
PHP 5.2.6-1+lenny3 with Suhosin-Patch 0.9.6.2 (cli) (built: Apr 26 2009 20:09:03)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
dev:~#