我正在阅读文档并找到了它。
http://book.cakephp.org/3.0/en/core-libraries/time.html#comparing-with-intervals
但是我不能应用这个函数"isWithinNext",或者我不知道HAH。我需要知道我的日期是否有效,例如:
我的表的字段是 "token_time_exp" = 2015-02-06 23:17:52 ,此日期将在 72 小时或 3 天后过期。
我该用什么? wasWithinLast? isWithinNext? 或者两者都错了。对不起,我这周开始使用蛋糕!:D
节省token_time_exp:
$user = $this->Users->patchEntity($user,
[
'mail_temp' => $this->request->data['mail'],
'token_mail' => 12345,
'token_time_exp' => date("Y-m-d H:i:s")
]);
假设今天是第 9 天,令牌的天 = 6,我想这会返回 true,因为它已经过去了 72 小时。右?
现在,我将测试是否已经3天了。
if($users->token_time_exp->isWithinNext(3)){
debug('Expired');//return true
}else{
debug('Valid');//return false
}
不显示错误,它有效,但我想我不知道如何使用:''
isWithinNext(3)
,您可以测试token_time_exp
是否介于现在和将来的 3 之间,但是当您保存用户的token_time_exp
时,您将其设置为当前日期,因此它不起作用。
您应该改用wasWithinLast(3)
,或者将token_time_exp
的日期保存为未来 3 天的日期。
您的isWithinNext(3)
检查可能没有意义,假设数据库中存在 5 天的间隔,它将在设置后 2 天开始有效,然后再有效 3 天。如果这是您的目标行为,那么您的支票就可以了。
如果您也希望大于 3 天的到期间隔也有效,即您不在乎日期是在 1、2、3、4 还是 5 天到期,那么您将改为使用
$user->token_time_exp->isPast()
当到期日期在过去至少为 1 秒时计算为 true
( < now
(,或
!$user->token_time_exp->isFuture()
当到期日期等于当前日期或至少是过去 1 秒 (<= now
( 时,计算结果为 true
。