【发布时间】:2014-02-27 08:52:30
【问题描述】:
我正在尝试将未来日期与今天的日期进行比较。此代码应该返回 false,但它返回 true。
return (date('d-m-y') > date('15-03-14')) ? true : false;
【问题讨论】:
我正在尝试将未来日期与今天的日期进行比较。此代码应该返回 false,但它返回 true。
return (date('d-m-y') > date('15-03-14')) ? true : false;
【问题讨论】:
首先,你不需要短路 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');
【讨论】:
因为它们被比较为字符串而不是日期。
如果要比较日期,请使用以下内容:
return new DateTime() > new DateTime('2014-03-15');
【讨论】:
日期函数返回字符串,所以你比较两个字符串:
'27-02-14' > '15-03-14'
字符串逐个字符比较,在位置 0 我们有:
'2' > '1' - and this is true
【讨论】:
您可以使用strtotime()将日期转换为整数
return (strtotime(date('d-m-y')) > strtotime(date('15-03-14'))) ? true : false;
或者使用DateTime::diff()
【讨论】: