CakePHP 3:检查日期大于今天

时间:2016-06-14 11:43:45

标签: datetime cakephp cakephp-3.0

我有DATE类型的属性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'; }

{{1}}

但这不起作用。我怎么能这样做?

2 个答案:

答案 0 :(得分:7)

valid_till应该已经是一个日期/时间对象,具体取决于您的CakePHP版本和配置,默认情况下为\Cake\I18n\Time\Cake\I18n\Date\Cake\I18n\FrozenDate,均由碳或计时。

如果您使用的是CakePHP> = 3.2,那么您应该拥有\Cake\I18n\Date\Cake\I18n\FrozenDate个对象,并且您应该只需使用isPast()检查有效性,就像

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

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

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

另见

答案 1 :(得分:1)

试试这个:

$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';
}