如果date1
和date2
之间的范围小于1个月,我希望显示天数,如果大于1个月,我希望获得以月为单位的日期差。
我有一个类和函数,代码如下:
<?php
namespace App\Utility;
use Carbon\Carbon;
class DaysBetweenTwoDate
{
public function count($start_date, $end_date)
{
$date1 = Carbon::parse($start_date);
$date2 = Carbon::parse($end_date);
if ('less than 1 month') {
$result = $date1->diffInDays($date2);
} else if ('more than 1 month') {
$result = $date1->diffInMonths($date2);
}
return $result;
}
}
我知道如果我想得到以天为单位的时差,我可以使用diffInDays
,如果我想得到以月为单位的时差,我可以使用diffInMonths
。但我不知道的是 * 如何检查date1
和date2
之间的日期范围是大于还是小于1个月 *?
2条答案
按热度按时间0s7z1bwu1#
我需要做的只是检查
diffInMonths
的结果是大于1个月还是小于1个月。如果小于1个月,我只需要使用diffInDays
来计算时差(以天为单位)。ldioqlga2#
您可以使用问题中提到的条件,如下所示
在使用
diffInMonths
时,我们应该得到两个日期之间的差值。但是“二月”只有28天或29天,这会导致月份之间的差值错误。因此,我们需要使用精确浮点差值,通过floatDiffInMonths
方法得到月份的精确差值,然后需要舍入该值并将其转换为整数,如以下代码所示。如果在上述情况下,
date1
和date2
的差值大于1个月,则将返回月份。如果
floatDiffInMonths
的结果小于或等于0
,则将检查diffInDays
并返回2个日期之间的天数。