在 php 中验证日期


Validation of dates in php

我需要validate以下dates,我将其放在datetime formdatabase中。在他们之前,我check name是否empty并且有效,但它不适用于日期:

function validation($data, $files) {
    $errors= array();
    if (empty($data['name'])){
        $errors['name'] = get_string('error:name', 'carhire');
    }
    return $errors;
    //Here the dates won't work:
    if ($data['datefrom'] < $data['dateuntil']) {
        $errors['dateuntil'] = 'ERROR';
    }
    return $errors;
}

我错过了什么?谢谢你的帮助。

如果您执行如上所示的函数,它将不起作用,因为您将在日期"验证"之前结束它。

删除第一个return $errors;

function validation($data, $files) {
            $errors= array();
            if (empty($data['name'])){
                $errors['name'] = get_string('error:name', 'carhire');
            }
            return $errors; // <--- this will exit the function
            //Here the dates won't work:
            if ($data['datefrom'] < $data['dateuntil']) {
                $errors['dateuntil'] = 'ERROR';
            }
            return $errors;
}

由于这不是解决方案,我有另一个输入。(需要 PHP 5.2+)

function validation($data, $files) {
            $errors= array();
            if (empty($data['name'])){
                $errors['name'] = get_string('error:name', 'carhire');
            }
            //Here the dates won't work:
            $date_from = new DateTime($data['datefrom']); // example 2016-01-18 08:55:00
            $date_until = new DateTime($data['dateuntil']); // example 2016-01-19 08:55:00
            if ($date_from < $date_until) {
                $errors['dateuntil'] = 'ERROR';
            }
            return $errors;
}

使用评论中提到的值对其进行了测试,它对我有用(我收到错误消息)。如果它不起作用,请确保在数组中正确设置日期值。