Я пытаюсь получить разницу между двумя датами, как это
[
'years' : 4, // 0 if the difference is not above a year
'months': 4, // 0 if the difference is not of above a month
'weeks': 4, // 0 if the difference is not of above a week
'days': 4, // 0 if the difference is not of above a day
'hours' : 4 // 0 if the difference is not of above a hour
'minutes': 54 // 0 if the difference is not of above a minute
'seconds': 5 // 0 if the difference is not of above a second
]
Есть ли какая-либо служебная функция, которая дает мне что-то вроде выше в laravel PHP
это мой код на данный момент
$date1 = new Carbon('2018-08-18 11:09:12');
$date2 = new Carbon('2018-04-02 08:15:03');
// dd($date1->diffForHumans($date2, false, false, 6));
$p = $date2->diffForHumans($date1, false, false, 6);
Вы могли бы использовать diffAsCarbonInterval ()
$p = $date2->diffAsCarbonInterval($date1);
Затем вы можете получить доступ к вышеуказанным значениям с помощью:
$p->years //year
$p->months //month
$p->weeks //week
$p->daysExcludeWeeks //day
$p->hours //hour
$p->minutes //minute
$p->seconds //second
Или сделать еще один шаг вперед, вы можете создать макрос. Один из способов сделать это — добавить в метод регистрации вашего поставщика услуг приложения следующее:
\Carbon\Carbon::macro('diffAsArray', function ($date = null, $absolute = true) {
$interval = $this->diffAsCarbonInterval($date, $absolute);
return [
'year' => $interval->years,
'month' => $interval->months,
'week' => $interval->weeks,
'day' => $interval->daysExcludeWeeks,
'hour' => $interval->hours,
'minute' => $interval->minutes,
'second' => $interval->seconds,
];
});
Тогда вы можете позвонить:
$p = $date2->diffAsArray($date1);
Очевидно, что вы можете сменить имя метода макроса на другое, если хотите.
Других решений пока нет …