You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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";

核心逻辑:

  1. 先获取两个日期的年份差$years
  2. 克隆原日期并添加对应年数,避免修改原日期对象
  3. 计算这个新日期到目标日期的天数差,得到的就是年数之外的总天数
  4. 输出年数和总天数即可得到期望结果

内容的提问来源于stack exchange,提问作者Ohidul Islam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 14:39:52