微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

碳格式只有年份和闰年的日子

如何解决碳格式只有年份和闰年的日子

我试图在两个日期之间获得差异,但仅限于年和日,但将月添加到天中,例如:

$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

Try it yourself in the sandbox

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?