如何解决碳格式只有年份和闰年的日子
我试图在两个日期之间获得差异,但仅限于年和日,但将月添加到天中,例如:
$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");
首先得到两个日期之间的年差
$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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。