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

时间:2015-02-07 00:51:22

标签: php cakephp cakephp-3.0

我正在阅读文档并找到它..

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,我想这会回归真实,因为它已经72小时了。对吗?

现在,我将测试是否有3天......

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

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

2 个答案:

答案 0 :(得分:1)

您的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秒(true)时评估为<= now

答案 1 :(得分:1)

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

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