Carbon 格式只有年和闰年的日子
Carbon format only years and days with leap year
我正在尝试获取 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",
不幸的是它将跳过闰年。
如何正确操作?
看看这个
$date1 = Carbon::parse("02.02.2021");
$date2 = Carbon::parse("01.01.2000");
先求出2个日期的年差
$y = $date2->diff($date1)->y;
一旦你得到年份,加上这些年份,这样你就会有当年的 2 个日期,
当你使用 Carbon 得到当年的天数差异时,你会得到正确的天数
$date3= $date2->addYears($y);
完整代码
$date1 = Carbon::parse("02.02.2021");
$date2 = Carbon::parse("01.01.2000");
$years_total = $date2->diff($date1)->y;
$date3= $date2->addYears($years_total); //2021-01-01 using above example
$days_excluding_years = ($date3->diff($date1)->days);
echo $years_total ." Years ". $days_excluding_years ." days";
与不含 Carbon 的 DateTime 相同的解决方案。
//Diff in Years and Days (not Month)
$date1 = date_create("01.01.2000");
$date2 = date_create("02.02.2021");
$years = $date1->diff($date2)->y;
$days = $date1->modify($years." years")->diff($date2)->days;
echo $years." Years and ".$days." Days";
// 21 Years and 32 Days
我正在尝试获取 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",
不幸的是它将跳过闰年。 如何正确操作?
看看这个
$date1 = Carbon::parse("02.02.2021");
$date2 = Carbon::parse("01.01.2000");
先求出2个日期的年差
$y = $date2->diff($date1)->y;
一旦你得到年份,加上这些年份,这样你就会有当年的 2 个日期, 当你使用 Carbon 得到当年的天数差异时,你会得到正确的天数
$date3= $date2->addYears($y);
完整代码
$date1 = Carbon::parse("02.02.2021");
$date2 = Carbon::parse("01.01.2000");
$years_total = $date2->diff($date1)->y;
$date3= $date2->addYears($years_total); //2021-01-01 using above example
$days_excluding_years = ($date3->diff($date1)->days);
echo $years_total ." Years ". $days_excluding_years ." days";
与不含 Carbon 的 DateTime 相同的解决方案。
//Diff in Years and Days (not Month)
$date1 = date_create("01.01.2000");
$date2 = date_create("02.02.2021");
$years = $date1->diff($date2)->y;
$days = $date1->modify($years." years")->diff($date2)->days;
echo $years." Years and ".$days." Days";
// 21 Years and 32 Days