【问题标题】:PHP - Is a date in the pastPHP - 是过去的日期
【发布时间】:2021-10-26 08:27:17
【问题描述】:

我试图比较日期是今天还是过去。据我所知,我应该能够执行 date1

我正在从数据库中获取日期并使用它添加 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 得到的输出是

结束日期:2021-09-01

2021 年 1 月 10 日是今天之前的日期吗? (26-10-2021) - 是的

结束日期:2021-10-15

2021 年 11 月 14 日是今天之前的日期吗? (26-10-2021) - 是的

【问题讨论】:

标签: php date


【解决方案1】:

因为你比较的是字符串,而应该比较时间戳


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/>";
}

【讨论】:

    【解决方案2】:

    您正在将日期格式化为字符串。 PHP 无法知道字符串 '26-10-2021' 应该“小于”字符串 '14-11-2021'。

    如果您先格式化它们('Y-m-d'),它会起作用,但最好比较整数时间戳(strtotime 的输出)或DateTimeImmutable objects。

    【讨论】:

      猜你喜欢
      • 2011-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多