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"或者我不知道哈哈。我需要知道我的日期是否有效,例如:

我的Table字段是"token_time_exp" = 2015-02-06 23:17:52,这个日期在72小时或3天.

我用什么?是WithinLast?是WithinNext?或者两者都错了……对不起,我这周开始用蛋糕了! :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 天,我想 return 是正确的,因为已经 72 小时了……对吗?

现在,我会测试是否已经 3 天..

if($users->token_time_exp->isWithinNext(3)){
            debug('Expired');//return true
        }else{
            debug('Valid');//return false
        }   

不显示错误,它有效,但我想我不知道如何使用:\

您的 isWithinNext(3) 检查可能没有意义,假设数据库中存在 5 天的间隔,它将在设置后 2 天开始有效,然后再有效期 3 天。如果这是您的目标行为,那么您的检查就可以了。

如果您希望大于 3 天的过期间隔也有效,即您不关心日期是否在 1、2、3、4 或 5 天后过期,那么您而是使用

$user->token_time_exp->isPast()

当过期日期至少为过去 1 秒 (< now) 时,计算结果为 true,或者

!$user->token_time_exp->isFuture()

当到期日期等于当前日期或过去至少 1 秒 (<= now) 时,计算结果为 true

通过使用 isWithinNext(3),您正在测试 token_time_exp 是否介于现在和未来 3 之间,但是当您保存用户的 token_time_exp 时,您将其设置为当前日期, 所以它不会起作用。

您应该改用 wasWithinLast(3),或者将 token_time_exp 保存为 3 天后的日期。