2015-02-07 37 views
0

我讀的文檔,發現它..CakePHP 3 - 如何檢查日期是否有效?

http://book.cakephp.org/3.0/en/core-libraries/time.html#comparing-with-intervals

但我不能應用此功能「isWithinNext」或者我不知道HAH。我需要知道,如果我的日期是有效的,例如:

我的表的字段是「token_time_exp」 = 2015年2月6日二十三時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 
     } 

不顯示錯誤,它的工作原理,但我覺得我不知道如何使用:\

+0

嗨,我喜歡你如何編寫問題:D ...但我們需要知道你如何聲明時間,請告訴我們你的代碼,它顯示了時間聲明和你如何調用函數。如果你有任何問題,顯示錯誤是很好的。 – 2015-02-07 01:06:35

+0

Thx:D我會編輯! ^^ – TMoraes 2015-02-07 01:12:03

+0

您是否正在討論在保存數據之前驗證數據(即最大過期時間間隔=從現在開始的3天),還是關於檢查從數據庫中檢索的值(即到期日期到期)? – ndm 2015-02-07 12:49:58

回答

1

通過使用isWithinNext(3)您正在測試token_time_exp將來是否在現在和3之間,但是當您保存用戶的token_time_exp時,將其設置爲當前日期,因此它不起作用。

您應該使用wasWithinLast(3)代替,或將日期爲3天的日期保存爲token_time_exp

+0

工作! <3 bjs .. – TMoraes 2015-02-08 04:33:30

1

isWithinNext(3)檢查可能沒有意義,想象一下,數據庫中存在5天的時間間隔,它將在2天后開始有效,然後再有效3天。如果這是你所打算的行爲,那麼你的支票就好了。

如果您希望超過3天的到期時間間隔也是有效的,也就是說,您不必關心日期是在1,2,3,4或5天內過期, ð改用

$user->token_time_exp->isPast() 

其評估爲true當期滿日期是至少1秒過去(< now),或

!$user->token_time_exp->isFuture() 

其評估爲true當期滿日期等於當前日期或者至少是1秒cond過去(<= now)。

+0

這些函數,「isFuture」或「isPast」,我沒有在文檔中找到..它是蛋糕2.x嗎? – TMoraes 2015-02-08 02:31:25

+0

@ThiagoMoraes他們[**由碳**提供](https://github.com/briannesbitt/Carbon#comparison),其中\ Cake \ I18N \ Time延伸。我稍後會刪除我的答案,因爲我誤解了你的問題。 – ndm 2015-02-08 19:14:49

+0

nahh .. np的男人,你正在幫我:) – TMoraes 2015-02-08 20:40:10