新的 DateTime 无法与未来日期一起正常工作

new DateTime is not working properly with the future date

我正在尝试计算两个日期之间的差异。

第一个日期是预订日期,第二个日期是旅行者的生日。 $tour_day 的格式是 15 December, 202X

$date1 = new DateTime($bir_day);
$date2 = new DateTime($tour_day);
$interval = $date1->diff($date2);

if($interval->y < 8) {
// error: Adults must be at least 8 years old
 }

如果预订日期是当年,则有效。

但是,如果预订日期为 2022 年或以上,则无法正确计算,因为

$date2 = new DateTime($tour_day);

始终转换为 2021。

echo $tour_day; 

是“2023 年 12 月 15 日”但是

echo $date2->format('m-d-y');

是“12-15-21”,但它必须是“12-15-23”(我想要的是 12-15-23,但显示的是 12-15-21)

我不明白为什么未来的日期(明年或更长时间)没有正确转换,但任何日期的当前年份都没有问题。

那是因为您的日期字符串的格式不符合 DateTime, use createFromFormat() 的要求,如:

...
$tour_day = "5 December, 2023";
// your format is "Day Month, Year", so use that format as below
$date2 = DateTime::createFromFormat("j F, Y", $tour_day);
echo $date2->format('m-d-y'); // 12-05-23
...