Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 日期加30天验证_Php_Mysql_Validation_Yii - Fatal编程技术网

Php 日期加30天验证

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)

我正在尝试用Yii编写验证规则,但无法将日期与工作日期进行比较。如果
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)addError($dateX,“超时超过”);
}
}

我已经在以以下方式使用它:

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)addError($dateX,“超时超过”);
}
}


这用于使用用户输入验证表单。因此,我试图验证用户输入,而不是数据库内容。您的行:$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这不是我在这个场景中想要的,但在许多其他情况下仍然非常有用。我会好好利用它。这不是我在这个场景中想要的,但在许多其他情况下仍然非常有用。我会好好利用它。