Datetime CakePHP 3:检查日期是否大于今天
我有一个类型为Datetime CakePHP 3:检查日期是否大于今天,datetime,cakephp,cakephp-3.0,Datetime,Cakephp,Cakephp 3.0,我有一个类型为DATE的属性在之前有效 现在我想做的是比较从今天起到现在的valid\u $couponCheck = $this->Coupons->find('all', [ 'conditions' => [ 'coupon_code' => $couponCode ] ]); if ($couponCheck->count() === 1) { $coupon = $couponCheck->fir
DATE
的属性在
之前有效
现在我想做的是比较从今天起到现在的valid\u
$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 = $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';
}
valid\u-til
应该已经是日期/时间对象,这取决于您的CakePHP版本和配置,默认情况下可以是\Cake\I18n\time
、\Cake\I18n\date
或\Cake\I18n\FrozenDate
,由Carbon或Chronos支持
如果您使用的是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()
另见
谢谢,它成功了。但在第二行中几乎没有变化,$dt=新时间($valid\u-till)代码>。关于代码给出错误,因为未找到类“App\Controller\datetime”
。我用了用蛋糕\I18n\Time控制器中的code>正在运行。感谢@ndm分享此信息。有效期到
应该已经是一个时间对象,可以使用Chronos/Carbon提供的方法轻松检查@ANUJSHARMA9196如果优惠券未绑定到特定时间,您最好将到期日期存储为仅日期。这样,valid\u-til
date对象的时间组件就可以正确地设置为0
。很抱歉,键入的DATETIME
错误,它的date
仅适用于最简单的答案。我使用的是CakePHP3.2