为什么php DateTime对象不为我输入无效的日期错误?例如,
$date_test = '13-10-31';
$datetime = new DateTime();
$date = $datetime->createFromFormat('Y-m-d', $date_test);
$date_errors = $datetime->getLastErrors();
print_r($date_errors);
结果,
Array
(
[warning_count] => 0
[warnings] => Array
(
)
[error_count] => 0
[errors] => Array
(
)
)
我已将日期格式设置为“ Ymd”,即yyyy-mm-dd,因此“ 13-10-31”应该是错误输入,不是吗?
编辑
如果我将此行更改$datetime->createFromFormat('Y-m-d', $date_test);
为
$datetime->createFromFormat('YY-m-d', $date_test);
无论输入什么内容,都会出现错误。例如,
$date_test = '2013-10-31';
结果,
Array
(
[warning_count] => 0
[warnings] => Array
(
)
[error_count] => 2
[errors] => Array
(
[4] => Unexpected data found.
[10] => Data missing
)
)
为什么!??
您的日期是有效日期,但是您的代码不正确,因为它DateTime::createFromFormat()
是的静态函数getLastErrors()
。您的示例代码应为:-
$date_test = '13-10-31';
$date = \DateTime::createFromFormat('Y-m-d', $date_test);
$date_errors = \DateTime::getLastErrors();
print_r($date_errors);
但是,由于10月31日(13-10-31)是有效日期,因此仍然不会有任何错误。当您提供'13'
年份时,DateTime会将其强制转换为整数13
,因此,它是有效的年份。
如果要舍弃无效的两位数年份,则必须编写自己的验证函数。
我建议您仔细阅读PHP日期和时间扩展文档
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句