我试图使用PHP的DateTime来验证日期,但是DateTime将接受一些格式良好但无效的日期,比如2015-02-30
,它将转换为March 2, 2015
,而不会引发异常。对于使用DateTime或其他方法来处理这个问题,有什么建议吗?
编辑:谢谢大家的帮助!我是通过捕获异常来处理错误的,但我没有意识到,异常只会抛出错误,而不是警告,而这种输入只会发出警告。
发布于 2015-06-04 13:27:06
用DateTime::getLastErrors()
检查错误。格式良好但无效的日期:
$date = '2015-02-30';
DateTime::createFromFormat('Y-m-d', $date);
$errors = DateTime::getLastErrors();
print_r($errors);
产量:
Array
(
[warning_count] => 1
[warnings] => Array
(
[10] => The parsed date was invalid
)
[error_count] => 0
[errors] => Array
(
)
)
而非格式良好的日期$date = '02-30';
则产生:
Array
(
[warning_count] => 0
[warnings] => Array
(
)
[error_count] => 1
[errors] => Array
(
[5] => Data missing
)
)
发布于 2015-06-04 13:11:43
在使用checkdate()
之前,可以使用DateTime()
检查日期是否有效。
$parts = explode('-', '2015-02-30');
if (checkdate($parts[1], $parts[2], $parts[0])) {
// DateTime() stuff here
}
https://stackoverflow.com/questions/30654214
复制相似问题