使用碳和刀片计算两个日期之间的差异

时间:2016-09-15 10:37:05

标签: php laravel laravel-blade php-carbon

有谁知道如何传递给定变量而不是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>

4 个答案:

答案 0 :(得分:34)

您没有关注Carbon Documentation中的示例。方法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>

答案 1 :(得分:3)

您可以执行以下操作来清理您的代码并删除注释掉的代码:

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

答案 2 :(得分:3)

刀片模板

较短的代码

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

结果:6分钟前

答案 3 :(得分:0)

最短的方式

我们可以直接将其写入刀片服务器

<span>{{ \Carbon\Carbon::parse( $start_date )->diffInDays( $end_date ) }}</span>