2013-07-22 41 views
2

PHP比較比較操作結束時切是>(大於)兩個日期時間對象。下面的代碼給出爲什麼PHP DateTime對象與對比運營商相比

$date1=new DateTime("07-03-2010"); 
    $date2=new Datetime("21-09-2015"); 
    if($date1>$date2) 
    { 
     echo "two datetime object has compared"; 
    } 

以上代碼給出正確result.My的問題是如何將兩個日期時間對象在PHP與對比操作者相比

+0

以上代碼打印什麼。第一個對象輸出不大於第二個。所有對象屬性進行比較。由於只有'公共'日期'是不同的,所以它被比較爲一個字符串。所以它比較字符串'2010-03-07 00:00:00'和字符串'2015-09-21 00:00:00' –

+0

@RoyalBg這不是事實。嘗試將$ date1與一個字符串「07-03-2010」進行比較 - 它會給出錯誤 – user4035

回答

3

DateTime是內建的,可以重載操作符。 (這在PHP中是不可能的......但是。)

我認爲相關行是ext/date/php_date.c:1995

+0

爲什麼會這樣:'if($ date1>「ZZ-ZZ-ZZZZ」)'給出true?使用OP示例中的$ date1。 – user4035

+0

@ user4035:可能是因爲[cast to int](http://codepad.org/I1MfxKuI)。 – Ryan

+0

是的,可能它們都被轉換爲int – user4035

0

其實在PHP中,當我們將日期存儲在一個變量中時,它不會以任何格式存儲。而是以秒爲單位存儲,即給定日期與由PHP定義的參考日期之間的差異。我不記得參考日期,你可以谷歌它。

所以,當你比較日期時,它實際上會比較秒數。

看看這個,

http://codepad.org/UvbPdpmG

+2

'mktime'不會返回一個'DateTime'對象。 – Ryan