在Laravel中减去时间

时间:2018-01-24 08:18:59

标签: php laravel time

我有两个字段 Mysql数据库中的开始时间和结束时间。 我想在Laravel中计算视图内的持续时间。 所以我写道:

{{ $date1=date('G:i',strtotime($timeSlot->beginningTime)) }}
{{ $date2=date('G:i',strtotime($timeSlot->endingTime)) }}
{{ $date2-$date1 }}

我的问题是: 差异只给我几小时的差异没有分钟...

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

你可以使用碳。刚刚测试过,效果很好:

$difference = Carbon::parse($timeSlot->beginningTime)->diff(Carbon::parse($timeSlot->endingTime));

在视图中:

{{ $difference->h }}:{{ $difference->i }}

如果你cast dates,你甚至不需要解析:

$difference = $timeSlot->beginningTime->diff($timeSlot->endingTime);

答案 1 :(得分:1)

在视图中包含逻辑是不好的做法。

使用carbon并将数据从控制器传递到视图。

$date1 = Carbon::parse(date('G:i',strtotime($timeSlot->beginningTime)));
$date2 = Carbon::parse(date('G:i',strtotime($timeSlot->endingTime)));

$totalDuration = $date1->diffInSeconds($date2);

然后使用gmdate

   $exactDuration =  gmdate('H:i:s', $totalDuration);

// 00:00:21

然后,您可以将此$exactDuration传递给您的视图并在那里使用。