我正在尝试将未来的日期与今天的日期进行比较。此代码应返回 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()