当前时间加 1 用于日期验证


Current time plus one for date validation?

我在尝试自定义的预订系统时遇到问题。如果我选择当天,验证似乎不适用于当前日期和时间。

验证如下所示。

if (strtotime($str) < time()) {

但这不允许我在当前日期预订,即使时间超过当前时间,也不确定我是否应该在验证中添加 + 一还是什么。任何想法都会非常有帮助。

这是完整的功能。

public function _validate_date($str) {
    if (strtotime($str) < time()) {
        $this->form_validation->set_message('_validate_date', 'Date must be after today, you can only make future reservations!');
        return FALSE;
    } else {
        return TRUE;
    }
}

请尝试以下解决方案:

$datetime1 = new DateTime($str);
$datetime1->setTime(0, 0, 0);
$datetime2 = new DateTime();
$datetime2->setTime(0, 0, 0);
//get the diff.
$diff = $datetime2->diff($datetime1);
$days = (int) $diff->format("%R%a");
if ($days < 0) {
    echo 'past days';
} elseif ($days == 0) {
    echo 'today';
} else {
    echo 'future days';
}

您可以在此处找到一个工作示例:https://3v4l.org/QQ4Pu

使用新解决方案的函数:

public function _validate_date($str) {
    $datetime1 = new DateTime($str);
    $datetime1->setTime(0, 0, 0);
    $datetime2 = new DateTime();
    $datetime2->setTime(0, 0, 0);
    //get the diff.
    $diff = $datetime2->diff($datetime1);
    $days = (int) $diff->format("%R%a");
    if ($days <= 0) {
        $this->form_validation->set_message('_validate_date', 'Date must be after today, you can only make future reservations!');
        return false;
    } else {
        return true;
    }
}

还有一个函数的工作示例:https://3v4l.org/HPTVF

如果要检查,当前时间不是更高的当前日期,请尝试以下操作:

if (strtotime($str) <  strtotime(date('Y-m-d 23:59:59')) {