【发布时间】:2021-03-09 12:54:49
【问题描述】:
我正在尝试获取 2 个日期之间的差异,但只有 年和日,但要添加月到日,例如:
$date1 = \Carbon\Carbon::parse(02.02.2021);
$date2 = \Carbon\Carbon::parse(01.01.2000);
$date2->diff($date1)->format('Y d');
但是如果我使用不带月份的格式,它将被省略并且不会添加到天。
21 years, 1 day
但真实的是
21 years, 1 month, 1 day
所以我想举例
21 years, 32 days
所以我做到了:
$days = $date2->diffInDays($date1)
$years = intval($days/ 365);
$days_minusYears = $days % 365;
$diff = "$years"."y"." $days_minusYears"."d",
不幸的是,它将跳过闰年。 如何正确操作?
【问题讨论】:
-
您首先要具体了解“将数月添加到数天”的实际含义。从您给出的示例中,听起来您刚刚添加了 30 天 - 但不是每个月 有 30 天,所以如果您只选择月数乘以 30,恕我直言,您不太可能得到任何明智的结果.
-
@CBroe 不会将月份和日期相乘。计算天数,不包括年份。我只想要不包括几年后的天数。
-
请发布一个可重现的示例。 $dep 在您的第一个示例中不存在。
-
@jspit 帖子已修复
-
@Davidos 一月总是有 31 天。那么从1月1日到2月2日是32天。预期结果必须是 21 年零 32 天。
标签: php laravel date php-carbon