2014-07-08 19 views
0

任何人都可以解決這個問題嗎?當它結束時,我不知道如何捕捉日期。idate()期望參數2長,對象給出

例如:

$date_expire = '2014-07-06 13:01:00'; 

$date1 = new DateTime(); 
$date2 = new DateTime($date_expire); 


if(idate('Y', $date1) >= idate('Y', $date2)){ 
    echo 'unlimited'; 
} else { 
    echo 'expired'; 
} 

錯誤IDATE()預計參數2要長,給定對象

我總是得到unlimited

+0

錯誤已經指出了,你和一個DateTime對象餵養它,而不是時間戳 – user1978142

回答

0

看到idate()的文檔,第二個參數是一個整數Unix時間戳默認爲如果沒有給出時間戳的當前本地時間,所以變爲

... 
if(idate('Y', strtotime($date1)) >= idate('Y', strtotime($date2))){ 
    echo 'unlimited'; 
} else { 
    echo 'expired'; 
} 
0

idate()屬於所述同一家族的功能爲date(),即與UNIX time一起處理時間,而不是DateTime對象。

改爲將$date->getTimestamp()改爲idate()

if(idate('Y', $date1->getTimestamp()) >= idate('Y', $date2->getTimestamp())){ 
    echo 'unlimited'; 
} else { 
    echo 'expired'; 
} 

或者更好的是:

if ($date1->format('Y') >= $date2->format('Y')) 
... 
相關問題