2011-09-01 19 views
0

你如何比較OOP的日期?你怎麼看:Php面向對象風格的日期比較

$date1 = new Date(); 
... 
$date2 = new Date(); 

if ($date1 > $date2) { 
    ... 
} 

請不要在類似strtotime等例子,只有面向對象。

+0

嗯,這取決於你要比較的,不是嗎? – alexn

+0

是在DateTime對象上定義的嗎?我懷疑它不是,這確實會有一些非常奇怪的行爲。 – Gian

+0

@alexn是的。我想比較日期。 – zapadlo

回答

3

如果您使用PHP DateTime對象,則可以使用標準比較運算符比較日期。欲瞭解更多信息和示例,請參閱DateTime::diff manual page

這裏是例子#2從手動:

$date1 = new DateTime("now"); 
$date2 = new DateTime("tomorrow"); 

var_dump($date1 == $date2); 
var_dump($date1 < $date2); 
var_dump($date1 > $date2); 
+0

請注意,這僅適用於PHP 5.2.2+。 – AlexV

+0

該手冊說PHP 5.3.0,但即使這是[自兩年以上以來支持的最低版本](http://en.wikipedia.org/wiki/Php#Release_history)。 – feeela

+0

DateTime :: diff返回DateInterval,它不能爲負數,所以我永遠不會知道日期是多大。 – zapadlo

0

如果Date應該是內部DateTime類,你的代碼是絕對的罰款。但是,如果Date是自定義類,則代碼將無法按預期工作。與其他編程語言不同,PHP不允許您的代碼運行所需的運算符重載。您需要一些信息告訴PHP它應該如何與您的類的實例上的比較運算符一起工作,因爲PHP無法知道如何比較$date1$date2並確定哪一個更大。

然而,你可以定義你的類的一些比較方法......

$date1->isLargerThan($date2);