【发布时间】:2013-10-05 04:53:56
【问题描述】:
为什么 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
(
)
)
我已将日期格式设置为“Y-m-d”,即 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
)
)
为什么!??
【问题讨论】:
-
$date看起来像什么?如果你不使用$date,那条线($date = $datetime->createFromFormat('Y-m-d', $date_test);)是如何做的? -
10=10 月有 31 天仍然有效。
-
正如@Corrupt 回答的那样,13 被翻译为13AD(Anno Domini)。非常多的有效日期。
-
@Lenin 我想补充一下,第 13 年也是有效的,尽管大多数在那一年生活的人已经死了。
-
'DateTime::createFromFormat()' 是一个静态函数。