新的 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
...
我正在尝试计算两个日期之间的差异。
第一个日期是预订日期,第二个日期是旅行者的生日。 $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
...