我想比较一个日期是今天还是过去。据我所知,我应该能够执行date1 <= today,但即使日期在未来,它也显示为true
我从数据库中获取日期,并使用
添加30天echo "End Date: " . $rowTicket['endDate'] . "<br/>";
$disableDate = ($rowTicket['endDate'] != '0000-00-00') ? date('d-m-Y', strtotime('+30 days', strtotime($rowTicket['endDate']))) : '';
然后使用
检查echo "Is " . $disableDate . " before today's date? (" . date("d-m-Y") . ")";
if($disableDate <= date("d-m-Y")) {
//$colourTR = $red;
echo " - Yes<br/><br/>";
} else {
echo " - No<br/><br/>";
}
我从echo's得到的输出是
结束日期:2021-09-01
01-10-2021在今天之前吗?(26-10-2021) -是
结束日期:2021-10-15
14-11-2021在今天之前吗?(26-10-2021) -是
因为你比较字符串,而应该比较时间戳
echo "End Date: " . $rowTicket['endDate'] . "<br/>";
$disableDate = $rowTicket['endDate'] != '0000-00-00'
? strtotime('+30 days', strtotime($rowTicket['endDate']))
: '';
$today = strtotime('today midnight');
echo "Is {$disableDate} before today's date? (" . date("d-m-Y", $today) . ")";
if($disableDate <= $today) {
//$colourTR = $red;
echo " - Yes<br/><br/>";
} else {
echo " - No<br/><br/>";
}
您正在将日期格式化为字符串。PHP没有办法知道字符串'26-10-2021'应该小于';字符串'14-11-2021'.
如果您将它们格式化为年份优先('Y-m-d'),则可以工作,但最好比较整数时间戳(strtotime
的输出)或DateTimeImmutable对象。