我目前有一个日期存储在我的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;
}
虽然这在同一天的不同时间工作正常;一周后使用代码开始显示出重大错误。
答案 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
。