получить разбивку разницы даты и времени в переполнении стека laravel

Я пытаюсь получить разницу между двумя датами, как это

[
'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);

0

Решение

Вы могли бы использовать 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);

Очевидно, что вы можете сменить имя метода макроса на другое, если хотите.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]