Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有无效月或日的PHP DateTime_Php - Fatal编程技术网

带有无效月或日的PHP DateTime

带有无效月或日的PHP DateTime,php,Php,我正在使用docker和php:7.4-fpm、nginx和symfony 4.4 在使用Behat测试API时,我对处理带有无效日期的“new DateTime()”感到困惑 查询:&startDate=1900-00-00&endDate=2100-00-31 new DateTime($startDate); // 1899-11-30 new DateTime($endDate); // 2099-12-31 查询:&startDate=1900-99-01 // Failed to

我正在使用docker和php:7.4-fpm、nginx和symfony 4.4

在使用Behat测试API时,我对处理带有无效日期的“new DateTime()”感到困惑

查询:&startDate=1900-00-00&endDate=2100-00-31

new DateTime($startDate); // 1899-11-30
new DateTime($endDate); // 2099-12-31
查询:&startDate=1900-99-01

// Failed to parse time string (1900-99-01)
查询:&endDate=2100-99-31

// Failed to parse time string (2100-99-31)
为什么月份“00”可以,而不是“99”? 为什么起始日期是“1899-11-30”而不是“1899-12-31”


有人能解释一下这种行为吗?

根据文件

您可以使用第0个月或第00年。第0天是指上个月的最后一天。 如果您这样做:

$date->setDate(0, 1, 1);
echo $date->format("Y:m:d:H:i");
您将获得以下信息:

0000:01:01:00:00

也许你应该从手册开始?这样的行为已经在这里解释过了。感谢您并没有只在datetime对象中查看dateformats,并在那里发现了一些问题。感谢您的解释。正如@u_mulder所述,它在关于日期格式的“注释”部分中有所说明。他忽略了这一点。