使用 Carbon 和 Blade 计算两个日期之间的差异
Calculate difference between two dates using 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>
您没有遵循 Carbon Documentation 中的示例。方法 Carbon::createFromDate()
需要 4 个参数:year、month、day 和 时区。而您正在尝试传递格式化的日期字符串。
如果您想从格式化的日期字符串创建 Carbon 对象,您可以使用 class 的构造函数,就像这样:
$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>
您的代码可以通过以下方式清理并删除注释掉的代码:
<td>{{ $diff = Carbon\Carbon::parse($work['date'])->diffForHumans(Carbon\Carbon::now()) }} </td>
Blade 模板
更短的代码
{{ $diff = Carbon\Carbon::parse($data->last_updated)->diffForHumans() }}
结果:6 分钟前
最短路线
我们可以直接写在blade里面
<span>{{ \Carbon\Carbon::parse( $start_date )->diffInDays( $end_date ) }}</span>
Carbon 意味着您不需要混合使用 PHP Datetime 和 Carbon。
一旦您将日期时间作为 Carbon,只需执行此操作...
$comparisonTimeAsCarbon->diffAsCarbonInterval($theOtherTimeAsCarbon)
您可以将 diffAsCarbonInterval
更改为 diffAsSeconds
、diffAsMinutes
等等。
diffForHumans
是我的最爱之一。
或者,选择您自己的格式...
$comparisonTimeAsCarbon->diff($theOtherTimeAsCarbon)->format('%I:%S')
Carbon 甚至可以让您添加文本而不是 Carbon 时间,但是,我建议您在解析之前使用 Carbon,以防万一。
您可以直接在 Blade 模板上使用:
{{ (Carbon\Carbon::parse(Auth::user()->created_at))->diffInDays(Carbon\Carbon::now()) }}
有谁知道如何传递给定变量而不是 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>
您没有遵循 Carbon Documentation 中的示例。方法 Carbon::createFromDate()
需要 4 个参数:year、month、day 和 时区。而您正在尝试传递格式化的日期字符串。
如果您想从格式化的日期字符串创建 Carbon 对象,您可以使用 class 的构造函数,就像这样:
$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>
您的代码可以通过以下方式清理并删除注释掉的代码:
<td>{{ $diff = Carbon\Carbon::parse($work['date'])->diffForHumans(Carbon\Carbon::now()) }} </td>
Blade 模板
更短的代码
{{ $diff = Carbon\Carbon::parse($data->last_updated)->diffForHumans() }}
结果:6 分钟前
最短路线
我们可以直接写在blade里面
<span>{{ \Carbon\Carbon::parse( $start_date )->diffInDays( $end_date ) }}</span>
Carbon 意味着您不需要混合使用 PHP Datetime 和 Carbon。 一旦您将日期时间作为 Carbon,只需执行此操作...
$comparisonTimeAsCarbon->diffAsCarbonInterval($theOtherTimeAsCarbon)
您可以将 diffAsCarbonInterval
更改为 diffAsSeconds
、diffAsMinutes
等等。
diffForHumans
是我的最爱之一。
或者,选择您自己的格式...
$comparisonTimeAsCarbon->diff($theOtherTimeAsCarbon)->format('%I:%S')
Carbon 甚至可以让您添加文本而不是 Carbon 时间,但是,我建议您在解析之前使用 Carbon,以防万一。
您可以直接在 Blade 模板上使用:
{{ (Carbon\Carbon::parse(Auth::user()->created_at))->diffInDays(Carbon\Carbon::now()) }}