2011-08-08 157 views
1

我目前有一個日期作爲255個字符的VARCHAR存儲在我的SQL數據庫中。我宣佈這個字符串爲PHP中的日期比較

//within an object... 
    $date = date(DATE_RFC822); 

現在,在後面的編碼中,我意識到我需要實際上比較彼此的日期。我最初的,很幼稚的嘗試看起來像這樣有點:

if(object_1->date > object_2->date){ 
//do this that assumes that object_1 was created at a later date than object_2 
}else{ 
continue; 
} 

雖然這在同一天的不同時間運行良好;一週後使用該代碼開始顯示重大錯誤。

回答

3

strtotime()將字符串轉換爲unix時間(整數),可以很容易地與其他unix時間值進行比較。如果您運行PHP 5.2.8或更高版本,還可以使用DateTime類,這些類相對比較容易(請參閱this question瞭解更多信息)

1

您無法將DATE_RFC822格式的日期與對方進行比較。您應該在MySQL中使用Date或DateTime字段,在PHP中使用DateTime或Unix時間戳。在PHP DateTime構造函數或strtotime()中使用DATE_RFC822字符串是安全的。 (但是,如果您在MySQL中使用Date或DateTime,您還可以按日期排序並按日期搜索等)。

PHP DateTime對象可以像正常的PHP變量一樣相互比較,因此您可以使用$date1 < $date2來確定如果$date1$date2之前。