我有一个类型为 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 版本和配置,默认情况下是 CakeI18nTime
、CakeI18nDate
或 CakeI18nFrozenDate
,由 Carbon 或 Chronos 支持。
如果你在 CakePHP>= 3.2 上,那么你应该有一个CakeI18nDate
或CakeI18nFrozenDate
对象,你应该能够简单地使用 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';
}