蛋糕PHP 3:检查日期大于今天



我有一个类型为 DATE 的属性valid_till

现在我想做的是比较valid_till今天的情况。

$couponCheck = $this->Coupons->find('all', [
    'conditions' => [
       'coupon_code' => $couponCode
     ]
   ]);
   if ($couponCheck->count() === 1) {
     $coupon = $couponCheck->first();
     if ($coupon->valid_till >= isToday()) {
        echo 'Coupon is Valid';
     } else {
        echo 'Coupon is Expired';
     }
   } else {
      echo 'This is not a valid coupon code';
   }

但这行不通。我该怎么做?

valid_till应该

已经是一个日期/时间对象,这取决于你的 CakePHP 版本和配置,默认情况下是 CakeI18nTimeCakeI18nDateCakeI18nFrozenDate ,由 Carbon 或 Chronos 支持。

如果你在 CakePHP>= 3.2 上,那么你应该有一个CakeI18nDateCakeI18nFrozenDate对象,你应该能够简单地使用 isPast() 检查有效性,比如

if (!$coupon->valid_till->isPast()) {
    echo 'Coupon is Valid';
} else {
    echo 'Coupon is Expired';
}

对于早期版本,您今天也必须检查,例如

!$coupon->valid_till->isPast() || $coupon->valid_till->isToday()

参见

  • 食谱>日期和时间
  • 食谱>日期和时间>不可变日期和时间
  • Cookbook> Database Access & ORM> Database Basics> Enable Immutable DateTime Objects
  • 食谱>克罗诺斯>比较方法
  • 碳文档>比较

试试这个:

$valid_till = $coupon->valid_till;
$dt = new DateTime($valid_till);
$date = $dt->format('Y-m-d');
if ($date >= date('Y-m-d')) {
echo 'Coupon is Valid';
} else {
echo 'Coupon is Expired';
}

最新更新