Php 日期加30天验证
我正在尝试用Yii编写验证规则,但无法将日期与工作日期进行比较。如果Php 日期加30天验证,php,mysql,validation,yii,Php,Mysql,Validation,Yii,我正在尝试用Yii编写验证规则,但无法将日期与工作日期进行比较。如果End不超过Start前30天,则查看是否呈现错误消息 public function checkDate($attribute,$params) { $duration = strtotime(date('Y-m-d', strtotime($this->Start)) . ' +30 days'); if ($this->End < $duration)
End
不超过Start
前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!');
}
及
这会给出100%的时间误差
$duration = date('Y-m-d', strtotime($this->Start . '+ 30 days'));
if ($this->End < $duration)
$this->addError('End','30 days or more!');
$duration=date('Y-m-d',strotime($this->Start.+30天));
如果($this->End<$duration)
$this->addError('End','30天或更长!');
如果要将$duration
与$this->END
(从数据库中直接出来)进行比较,则需要在检查$this->END
之前输入日期('Y-m-d',$duration)
你把一段时间比作一个日期('Y-m-d')
苹果和橙子在哪里
改变
$duration=strottime(日期('Y-m-d',strottime($this->Start))。+30天);
到
$duration=date('Y-m-d',strottime($this->START.+30天))
你的剧本应该可以用
希望这有帮助如果您正在比较
$duration
到$this->END
(从数据库中直接出来),您需要在检查$this->END
之前输入日期('Y-m-d',$duration)
#source: http://www.php.net/manual/en/datetime.diff.php
$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2009-10-13');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%a days');
你把一段时间比作一个日期('Y-m-d')
苹果和橙子在哪里
改变
$duration=strottime(日期('Y-m-d',strottime($this->Start))。+30天);
到
$duration=date('Y-m-d',strottime($this->START.+30天))
你的剧本应该可以用
希望这有帮助您可能需要使用并检查日差是否小于30,然后触发错误您可能需要使用并检查日差是否小于30,然后触发错误我已经在以以下方式使用它:
#source: http://www.php.net/manual/en/datetime.diff.php
$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2009-10-13');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%a days');
public function rules()
{
return array(
...
array('dateX','timeoutSomething'),
...
);
}
public function timeoutSomething($dateX){
// If you try to modify the model after 300 seconds the error arise
if((strtotime($this->dateX)+300) < time()){
$this->addError($dateX,"Timeout exceed");
}
}
公共功能规则()
{
返回数组(
...
数组('dateX','timeoutSomething'),
...
);
}
公共函数timeoutSomething($dateX){
//如果在300秒后尝试修改模型,则会出现错误
如果((strotime($this->dateX)+300)
我已经在以以下方式使用它:
public function rules()
{
return array(
...
array('dateX','timeoutSomething'),
...
);
}
public function timeoutSomething($dateX){
// If you try to modify the model after 300 seconds the error arise
if((strtotime($this->dateX)+300) < time()){
$this->addError($dateX,"Timeout exceed");
}
}
公共功能规则()
{
返回数组(
...
数组('dateX','timeoutSomething'),
...
);
}
公共函数timeoutSomething($dateX){
//如果在300秒后尝试修改模型,则会出现错误
如果((strotime($this->dateX)+300)
这用于使用用户输入验证表单。因此,我试图验证用户输入,而不是数据库内容。您的行:$duration=strotime(日期('Y-m-d',strotime($this->Start))。+30天);返回一个unix时间戳,如果您认为YYYY-MM-DD的时间戳将始终更大。感谢您的输入,我编辑了我的问题以显示更改和结果。始终显示错误。$duration和$this->END的输出在脚本中是什么样子的?(使用echo$duration;echo$this->END)它们都是日期格式吗?是的,我应该加上我确实验证了变量是否工作。但我没有意识到我得到的是两种不同的日期格式,所以var_dump($this->End<$duration);总是会变成现实。我会得到相同的日期格式,一切都应该工作。感谢您的帮助。这是用于验证带有用户输入的表单。因此,我试图验证用户输入,而不是数据库内容。您的行:$duration=strotime(日期('Y-m-d',strotime($this->Start))。+30天);返回一个unix时间戳,如果您认为YYYY-MM-DD的时间戳将始终更大。感谢您的输入,我编辑了我的问题以显示更改和结果。始终显示错误。$duration和$this->END的输出在脚本中是什么样子的?(使用echo$duration;echo$this->END)它们都是日期格式吗?是的,我应该加上我确实验证了变量是否工作。但我没有意识到我得到的是两种不同的日期格式,所以var_dump($this->End<$duration);总是会变成现实。我会得到相同的日期格式,一切都应该工作。感谢您的帮助。请小心使用strotime验证用户输入请参见时间戳的有效范围通常是从1901年12月13日星期五20:45:54 UTC到星期二,2038年1月19日03:14:07 UTC。
如果您可以使用php,请注意解释原因和/或给出备选方案?请小心使用strotime验证用户输入参见时间戳的有效范围通常是从1901年12月13日星期五20:45:54 UTC到星期二,2038年1月19日03:14:07 UTC。
如果您可以使用php Mind解释原因和/或给出备选方案?感谢您的输入,我编辑了我的问题以显示更改和结果。不确定我是否正确使用了它,但页面不会呈现,日志也没有显示原因。var_dump($interval)$天数_diff=$interval->d;echo$days_diff代码>也请注意属性反转
谢谢这里的帮助,请参阅我对AMayer的回复。你的两个答案让我找到了我所需要的,所以我感谢你的帮助+1感谢输入,我编辑了我的问题以显示更改和结果。不确定我是否正确使用了它,但页面不会呈现,日志也没有显示原因。var_dump($interval)$天数_diff=$interval->d;echo$days_diff代码>也请注意属性反转
谢谢这里的帮助,请参阅我对AMayer的回复。你的两个答案让我找到了我所需要的,所以我感谢你的帮助+1这不是我在这个场景中想要的,但在许多其他情况下仍然非常有用。我会好好利用它。这不是我在这个场景中想要的,但在许多其他情况下仍然非常有用。我会好好利用它。