Рассчитайте разницу между двумя датами с использованием Carbon and Blade

Кто-нибудь знает, как передать заданную переменную вместо параметров Carbon по умолчанию?

В документации Carbon говорится:

// CARBON SAMPLE

$dtToronto = Carbon::createFromDate(2012, 1, 1, 'America/Toronto');
$dtVancouver = Carbon::createFromDate(2012, 1, 1, 'America/Vancouver');
echo $dtVancouver->diffInHours($dtToronto); // 3

И я хочу сделать что-то вроде этого в моем контроллере:

  // EXAMPLE

  $date = "2016-09-16 11:00:00";
  $datework = Carbon::createFromDate($date);
  $now = Carbon::now();
  $testdate = $datework->diffInDays($now);

И извлечение этого из шаблона Blade

  // VIEW ON BLADE

  <td> {{ $testdate }} </td>

Ответ 1

Вы не следуете примеру из углеродной документации. Метод Carbon::createFromDate() предполагает 4 параметра: год, месяц, день и часовой пояс. И вы пытаетесь передать отформатированную строку даты.

Если вы хотите создать объект Carbon из отформатированной строки даты, вы можете использовать конструктор класса так:

$date = "2016-09-17 11:00:00";
$datework = new Carbon($date);

Или вы можете использовать статический метод Carbon::parse():

$date = "2016-09-17 11:00:00";
$datework = Carbon::parse($date);

Для своих целей вы можете использовать этот полный пример:

$date = Carbon::parse('2016-09-17 11:00:00');
$now = Carbon::now();

$diff = $date->diffInDays($now);

А затем в вашем шаблоне Blade:

<td> {{ $diff }} </td>

Ответ 2

Ваш код можно очистить и удалить закомментированный код, выполнив:

<td>{{ $diff = Carbon\Carbon::parse($work['date'])->diffForHumans(Carbon\Carbon::now()) }} </td>

Ответ 3

Шаблон лезвия

Более короткий код

{{ $diff = Carbon\Carbon::parse($data->last_updated)->diffForHumans() }}
.

Результат: 6 минут назад