2012-09-13 30 views
1

關於php date()函數,我有一些奇怪的結果。基本上,我從一個字符串格式的Mysql數據庫中獲取日期,並將其分成三個元素。這將是日,月,年(例如2012年9月15日)我最終比較兩個日期,看看它是否已經過期。但問題是,只有某些日期允許代碼工作,有些根本不工作(或允許if語句有效工作)。下面是我的代碼,任何幫助都會很棒。奇數日期(「Y-m-d」)結果

$today = date("d-m-Y"); 

$expire = date("d-m-Y",strtotime($this->getData('date_day')."-". 
$this->getData('date_month')."-".$this->getData('date_year'))) ; 

if ($expire < $today) 
{ 
    echo 'expired'; 
} 
else 
{ 
    echo 'Not expired'; 
} 

我確定它很簡單,但由於某種原因,我無法解決它。

+1

您能否添加一些不起作用的日期示例? – andrewsi

+0

我們能否提供您提到的特定用例? –

+0

我會冒險猜測,本月13日以後的任何事情都不起作用? – andrewsi

回答

5

您需要比較Unix時間戳。

$today = time(); 

$expire = strtotime($this->getData('date_day')."-". 
$this->getData('date_month')."-".$this->getData('date_year')) ; 

if ($expire > $today) 
{ 
    echo 'expired'; 
} 
else 
{ 
    echo 'Not expired'; 
} 
+0

非常好的電話Stephen305我從來沒有想過使用time()。謝謝。 – HireLee

0

它看起來像strtotime預計美國的日期格式;您需要交換月份和周圍當天產生有效日期:

$today = date("d-m-Y"); 

$expire = date("d-m-Y",strtotime($this->getData('date_month')."-". 
$this->getData('date_day')."-".$this->getData('date_year'))) ; 

在另一方面,看到Stephen305的答案 - 這是一個更好的解決您的問題。