date_create_from_format接受无效日期作为输入

Nil*_*oct 3 php parsing date

PHP date_create_from_format函数接受不存在但格式有效的日期.

我希望这个函数的行为类似于date命令:

niloct@HP-Mini:~$ date --date="29/02/2011" +%s
date: invalid date `29/02/2011'
Run Code Online (Sandbox Code Playgroud)

虽然这是在PHP中发生的事情:

$tmp = date_create_from_format('d/m/Y H:i:s',"29/02/2011 00:00:00", timezone_open('America/Sao_Paulo'));
var_dump($tmp);
/*
output: object(DateTime)#28 (3) { ["date"]=> string(19) "2011-03-01 00:00:00" ["timezone_type"]=> int(3) ["timezone"]=> string(17) "America/Sao_Paulo" }
*/
Run Code Online (Sandbox Code Playgroud)

-1在这种情况下,是否可以避免这种自动转换并返回功能?

niloct@HP-Mini:~$ php -v
PHP 5.3.3-1ubuntu9.3 with Suhosin-Patch (cli) (built: Jan 12 2011 16:08:14) 
Run Code Online (Sandbox Code Playgroud)

谢谢.

Jon*_*Jon 5

您可以使用组合date_parse_from_formatcheckdate看它是否是一个有效的日历日期.

例:

$date = date_parse_from_format('d/m/Y H:i:s',"29/02/2011 00:00:00");

if (checkdate($date['month'], $date['day'], $date['year'])) {
    echo "Valid date";
}
else {
    echo "Invalid date";
}
Run Code Online (Sandbox Code Playgroud)