我想在Yii編寫一個驗證規則,但無法獲得日期比較工作。如果End
不大於過去Start
的30天,則想要顯示錯誤消息。日期加上30天驗證
public function checkDate($attribute,$params)
{
$duration = strtotime(date('Y-m-d', strtotime($this->Start)) . ' +30 days');
if ($this->End < $duration)
$this->addError('End','30 days or more!');
}
有了這個每個輸入產生的錯誤信息。我使用的是MySQL數據庫,並開始和結束都是date
格式
編輯: 下面給出我已經試過
這樣,即使現在不顯示頁面中的答案輸入。
$startDate = $this->Start;
$endDate = $this->End;
$interval = $startDate->diff($endDate);
if ($interval < 30)
$this->addError('End','30 days or more!');
和
這給出了誤差的100%的時間。
$duration = date('Y-m-d', strtotime($this->Start . '+ 30 days'));
if ($this->End < $duration)
$this->addError('End','30 days or more!');
小心使用strtotime來驗證e用戶輸入見[strtotime Php手冊](http://php.net/manual/en/function.strtotime.php)'時間戳的有效範圍通常是從1905年12月13日星期五20:45:54 UTC到星期二,2038年1月19日03:14:07 UTC.'如果你可以使用php [日期時間](http://www.php.net/manual/en/class.datetime.php) – Henesnarfel 2012-02-06 18:47:10
介意解釋爲什麼和/或給出選擇? – enfield 2012-02-06 18:47:56