【问题标题】:Carbon: displaying hours and minutes?Carbon:显示小时和分钟?
【发布时间】:2017-10-12 15:48:10
【问题描述】:

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

如何让它显示小时数,可能还有分钟数?当它只给你时间时,它看起来有点可怕,而且很多人可能想知道更多像小时和秒这样的信息?

我在 Carbon 文档中找不到任何关于此的内容。如果相关的话,我会在 laravel 5.3 视图中使用它。

这是我的代码:

{{ \Carbon\Carbon::createFromTimeStamp(strtotime($item->created_at))->diffForHumans() }}

【问题讨论】:

  • 试试这个->format('j M Y , g:ia')
  • 正如@Zl3n 所说,您必须使用格式,因为 diffForHumans 的目的是提供一个易于人类阅读的近似值

标签: php laravel frameworks


【解决方案1】:

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

最好使用Carbon 对象,如下所示:

$created = \Carbon\Carbon::createFromTimeStamp(strtotime($item->created_at));

然后,在视图中添加这个:

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

您可以延长更长的时间:

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

编辑(根据 cmets):

如果你这样做:

$diff = $created->diff(Carbon::now());
var_dump($diff);

你得到这个结果:

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

从那里,您可以浏览元素以创建满足您需求的最佳答案。

【讨论】:

  • 你为什么这样做 ->diff(Carbon::now()) 而不是直接格式化日期?
  • @AlexvanVliet 使用Carbon 对象获取当前时间。你还有什么建议吗?
  • 如果分钟等于 0 这不好,它的格式不是很好,我需要一天的时间来有条理的格式。
  • 例如,假设我有 1 天,我需要它说“1 天”。
  • @AshSmith 你问的问题没有写在原始问题中。我已更改答案,以便您实现目标。
猜你喜欢
  • 2012-06-24
  • 2021-08-31
  • 1970-01-01
  • 1970-01-01
  • 2020-10-05
  • 1970-01-01
  • 2013-10-24
  • 2020-09-15
  • 2016-03-26
相关资源
最近更新 更多