我有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}}
但这不起作用。我怎么能这样做?
答案 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';
}