Search code examples
phplaravellaravel-bladephp-carbon

Calculate difference between two dates using Carbon and Blade


Does anyone know how to pass a given variable instead the Carbon's default parameters ?

The documentation of Carbon says:

// CARBON SAMPLE

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

And i want to do something like this in my controller:

  // EXAMPLE

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

And retrieving that on a Blade template

  // VIEW ON BLADE

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

Solution

  • You are not following the example from the Carbon Documentation. The method Carbon::createFromDate() expects 4 parameters: year, month, day and timezone. And you are trying to pass a formatted date string.

    If you want to create a Carbon object from a formatted date string you can use the constructor of the class just like this:

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

    Or you can use the static Carbon::parse() method:

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

    For your purposes you can use the this full example:

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

    And then in your Blade template:

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