2011-09-15 107 views
2

我有一个简单的事情,我试图解决。为什么这个简单的陈述如此简单?

我有一个日期存储在一个表中,我将它与PHP生成的日期进行比较。

即:

if($row['start_date'] < date("Y-m-d")) { 

    // table stored date larger than php date 
    echo 'hi'; 

} else { 

    // php date larger than table stored date 
    echo 'bye'; 

} 

这似乎确定我,但

if $row['start_date'] === '2011-09-13' AND date("Y-m-d") === '2011-09-15'. 

我结束了:

hi 

这可能是那些黄昏时刻,我想到的一个左边是对的,大于符号实际上是小于。所以请帮助我 - 为什么这不起作用?

+1

我建议['strtotime()'](http://php.net/manual/en/function.strtotime.php)。 –

+1

嗯,但不是''2011-09-13'<'2011-09-15''是真的吗? PHP中的 – NullUserException

+0

与lexigraphically使用'<?可能最好转换为某种数字类型(unix timestamp?)并进行比较。 –

回答

2

如果$row['start_date'] = '2011-09-13'date("Y-m-d") = '2011-09-15',那么你的PHP日期是大于行的日期,因此if是真的,毕竟'2011-09-13'是“小(<)”比'2011-09-15'。翻转你的<>,你会没事的。

if($row['start_date'] > date("Y-m-d")) { 

    // table stored date larger than php date 
    echo 'hi'; 

} else { 

    // php date larger than table stored date 
    echo 'bye'; 

} 
+0

啊..所以我疯了 – willdanceforfun

4

比较,你必须使用strtotime()$row['start_date']日期和time()

if(strtotime($row['start_date']) < time()) 
+0

你不必“使用'strtotime()' – NullUserException

1

使用strtotime()转换的字符串Unix时间戳然后进行比较。 或使用DateTime对象。

0

我不确定比较日期作为字符串的有效性,使用DateTimestrtotime并比较时间戳可能是更健壮的选项,但使用此日期格式它应该作为字符串工作。

除此之外,你的逻辑看起来像书面的(如果不是按照预期的)工作。 “... 13”小于“... 15”,因此if将评估为true,将打印“hi”。

从内嵌评论来看,它似乎实际上可能是您所说的那些暮色时刻之一。

相关问题