2011-02-22 436 views
20

大我有這樣的代碼:PHP:日期不是當前日期

$curdate = '22-02-2011'; 

$mydate = '10-10-2011';      

if($curdate > $mydate) 
{ 
    echo '<span class="status expired">Expired</span>'; 
} 

這將回聲過期,但不應該因爲$指明MyDate是未來,因此比$ CURDATE小,但PHP是看着JUST前兩個數字22和10而不是整個字符串。我怎樣才能解決這個問題?

感謝

回答

49

試試先將它們都轉換到時間戳,然後比較兩個轉換值:

$curdate=strtotime('22-02-2011'); 
$mydate=strtotime('10-10-2011'); 

if($curdate > $mydate) 
{ 
    echo '<span class="status expired">Expired</span>'; 
} 

這將它們轉換成秒數自1970年1月1日,所以你的比較應該工作。

+0

謝謝:)偉大的作品。 – Cameron 2011-02-22 18:42:52

+3

@Cameron你不覺得它有點過分,以錯誤的格式定義變量,然後將其轉換爲另一個?爲什麼不以適當的格式來定義它? – 2011-02-22 19:07:37

+0

如果我想知道當前日期少於1個月,那麼使用mydate如何?怎麼做? – Eli 2016-07-01 15:18:22

6

問題是你的當前變量是字符串,而不是時間變量。

嘗試了這一點:

$curdate = strtotime('22-02-2011'); 

$mydate = strtotime('10-10-2011'); 
1

使用PHP的日期/時間類,這些字符串表示轉換成東西,你可以直接比較使用getTimestamp()的UNIX時間進行比較。

如果您確定所有的日期都是這種格式,那麼您可以將它們分成YYYY-MM-DD字符串,然後字符串比較將正確運行。

1
if(strtotime($curdate) > strtotime($mydate)) 
{ 
... 
} 
-4

這很簡單

$curdate = '2011-02-22'; 
$mydate = '2011-10-10';      

if($curdate > $mydate) 
{ 
    echo '<span class="status expired">Expired</span>'; 
} 
3
$row_date = strtotime($the_date); 
$today = strtotime(date('Y-m-d')); 

if($row_date >= $today){ 
    ----- 
}