比较PHP中的日期。为什么这段代码返回true?

时间:2014-02-27 08:52:31

标签: php date datetime compare

我正在尝试将未来日期与今天的日期进行比较。此代码应返回false,但返回true。

return (date('d-m-y') > date('15-03-14')) ? true : false;

4 个答案:

答案 0 :(得分:1)

首先,你不需要短路if-else语句,只需使用

return date('d-m-y') > date('15-03-14');

其次,您要比较两个字符串而不是两个日期,因此字符串比较与日期比较不同。

您应该使用strtotime()功能或使用DateTime对象

return (strtotime(date('d-m-y')) > strtotime(date('15-03-14'))

return new DateTime() > new DateTime('2014-03-15');

答案 1 :(得分:0)

因为它们被比较为字符串而不是日期。

如果您想比较日期,请使用以下内容:

return new DateTime() > new DateTime('2014-03-15');

答案 2 :(得分:0)

日期函数返回字符串,因此您比较两个字符串:

'27-02-14' > '15-03-14'

字符串与char进行比较,在0位我们有:

'2' > '1' - and this is true

答案 3 :(得分:0)

您可以使用strtotime()

将日期转换为整数
return (strtotime(date('d-m-y')) > strtotime(date('15-03-14'))) ? true : false;

或者使用DateTime::diff()