PHP中的日期比较

时间:2011-08-08 19:10:08

标签: php oop date string-comparison

我目前有一个日期存储在我的SQL数据库中,其格式为255个字符的VARCHAR。我将此字符串声明为

   //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;
}

虽然这在同一天的不同时间工作正常;一周后使用代码开始显示出重大错误。

2 个答案:

答案 0 :(得分:3)

strtotime()将字符串转换为unix时间(整数),可以很容易地与其他unix时间值进行比较。如果您运行的是PHP 5.2.8或更高版本,您还可以使用相对容易比较的DateTime类(有关详细信息,请参阅this question

答案 1 :(得分:1)

您无法将DATE_RFC822格式的日期相互比较。您应该在MySQL中使用Date和DateTime字段,在PHP中使用DateTime或Unix时间戳。在PHP DateTime构造函数或strtotime()中使用DATE_RFC822字符串是安全的。 (不过,如果你在MySQL中使用Date或DateTime,你也可以按日期排序,按日期搜索等。)

PHP DateTime对象可以像普通的PHP变量一样相互比较,因此您可以$date1 < $date2确定$date1之前是否$date2