【发布时间】:2017-02-08 13:00:04
【问题描述】:
我正在尝试使用此代码获取日期之间的差异,但它无法产生正确的结果,此代码有什么问题,我找不到。
$birth_date = new DateTime("1977-03-23");
$current_date = new DateTime();
$diff = $birth_date->diff($current_date);
echo $years = $diff->y . " years " . $diff->m . " months " . $diff->d . " day(s)"; echo "<br/>";
echo $months = ($diff->y * 12) + $diff->m . " months " . $diff->d . " day(s)"; echo "<br/>";
echo $weeks = floor($diff->days/7) . " weeks " . $diff->d%7 . " day(s)"; echo "<br/>";
echo $days = $diff->days . " days"; echo "<br/>";
Outout 显示为 - 39 年 10 个月 16 天 但我认为输出应该是 - 39 年 10 个月 7 天
它计算正确的年份和月份,但日期是错误的。
【问题讨论】:
-
你考虑过闰年吗?
-
闰年...?这始终是这里的警告
-
但是.. 你为什么要忽略闰年?有些年份多出 1 天,这就是我们定义日历的方式。
-
另外:我认为
$diff->d % 7应该是$diff->days % 7(分别像那一行的地板) -
但它不在技术上是正确的,因为那些闰年实际上有 366 天(严格来说,每年有 365.25 天)。究竟为什么需要忽略闰日?
标签: php date-difference