PHP中计算两个日期的年数与天数差(排除月份显示)
问题
需求:计算两个日期的差值,仅返回年数和天数,不显示月份。
已尝试代码:
$date1 = new DateTime("2023-01-01"); $date2 = new DateTime("2024-04-10"); $difference = date_diff($date1, $date2); $years = $difference->y; $months = $difference->m; $days = $difference->d; echo "$years Years"; echo "<br />"; echo "$months month"; echo "<br />"; echo "$days days";
当前输出结果:
1 Years
3 month
9 days
期望输出结果:
1 Years
101 days
尝试多种方法未解决,寻求技术帮助。
解决方案
要实现将月份转换为天数并合并到总天数中,可先提取年份差值,再基于原日期加上对应年数后的节点,计算该节点到目标日期的总天数。
修改后的代码:
$date1 = new DateTime("2023-01-01"); $date2 = new DateTime("2024-04-10"); $difference = date_diff($date1, $date2); $years = $difference->y; // 复制原日期并加上已算出的年数,得到同基准的日期节点 $dateAfterYears = clone $date1; $dateAfterYears->add(new DateInterval("P{$years}Y")); // 计算该节点到目标日期的总天数 $totalDays = date_diff($dateAfterYears, $date2)->days; echo "$years Years"; echo "<br />"; echo "$totalDays days";
核心逻辑:
- 先获取两个日期的年份差
$years - 克隆原日期并添加对应年数,避免修改原日期对象
- 计算这个新日期到目标日期的天数差,得到的就是年数之外的总天数
- 输出年数和总天数即可得到期望结果
内容的提问来源于stack exchange,提问作者Ohidul Islam
相关产品推荐
相关产品推荐

