带有无效月或日的PHP DateTime
我正在使用docker和php:7.4-fpm、nginx和symfony 4.4 在使用Behat测试API时,我对处理带有无效日期的“new DateTime()”感到困惑 查询:&startDate=1900-00-00&endDate=2100-00-31带有无效月或日的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
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所述,它在关于日期格式的“注释”部分中有所说明。他忽略了这一点。