CakePHP 3 - 如何检查日期是否有效


CakePHP 3 - How to check if the date is valid?

我正在阅读文档并找到了它。

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