Carbon:显示小时和分钟?

Ash*_*ith 0 php frameworks laravel

我最近一直在使用Carbon来显示人性化的时间字符串,但是由于某种原因,我只能让它显示主要因素,例如,我有一个日期,它需要显示距该日期还有多长时间。因此,例如,如果距离现在6天4小时32分钟,则当前仅显示“ 6天”。

我将如何显示它的小时数,也可能显示分钟数?当它只给您几天的时间时,这看起来太恐怖了,许多人可能想了解更多像小时和秒吗?

我在Carbon文档上找不到任何内容。我什至在laravel 5.3视图中使用它。

这是我的代码:

{{ \Carbon\Carbon::createFromTimeStamp(strtotime($item->created_at))->diffForHumans() }}
Run Code Online (Sandbox Code Playgroud)

Zl3*_*l3n 5

diffForHumans()在这种情况下,您不应该使用它,因为它仅返回一个字符串,在该字符串上不再起作用。这是最终结果。

最好使用这样的Carbon对象:

$created = \Carbon\Carbon::createFromTimeStamp(strtotime($item->created_at));
Run Code Online (Sandbox Code Playgroud)

然后,在视图中添加:

{{ $created ->diff(\Carbon\Carbon::now())->format('%d days, %h hours and %i minutes'); }}
Run Code Online (Sandbox Code Playgroud)

您可以延长更长的时间:

$created ->diff(\Carbon\Carbon::now())->format('%y year, %m months, %d days, %h hours and %i minutes');
Run Code Online (Sandbox Code Playgroud)

编辑(根据评论):

如果您这样做:

$diff = $created->diff(Carbon::now());
var_dump($diff);
Run Code Online (Sandbox Code Playgroud)

您得到此结果:

object(DateInterval)[113]
  public 'y' => int 0
  public 'm' => int 0
  public 'd' => int 6
  public 'h' => int 4
  public 'i' => int 32
  public 's' => int 29
  public 'f' => float 0.397424
  public 'weekday' => int 0
  public 'weekday_behavior' => int 0
  public 'first_last_day_of' => int 0
  public 'invert' => int 0
  public 'days' => int 6
  public 'special_type' => int 0
  public 'special_amount' => int 0
  public 'have_weekday_relative' => int 0
  public 'have_special_relative' => int 0
  // results depend of the current time
Run Code Online (Sandbox Code Playgroud)

从那里,您可以浏览元素,从而为您的需求提供最佳答案。


Mai*_*rey 5

仅显示小时:分钟 (11:11)

要仅显示Hours:Minutes您可以使用:

$curr = \Carbon\Carbon::now()->format('H:i');
echo $curr; // 11:11
Run Code Online (Sandbox Code Playgroud)

如果您必须设置时区,则必须使用时区功能。您可以将您的时区传递给这些函数timezone('Your/Zone')

$curr = `\Carbon\Carbon::now()->timezone('Europe/Amsterdam')->format('H:i');
echo $curr; // 12:11
Run Code Online (Sandbox Code Playgroud)