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)
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)
从那里,您可以浏览元素,从而为您的需求提供最佳答案。
要仅显示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)