Laravel 5时差

Dev*_*Wol 3 php laravel eloquent laravel-5.1

我有一个应用程序,它及时登录记录和退出记录的时间.

我的表有IN_TIME和OUT_TIME

这些列中的数据示例:

IN_TIME = 16:06:46

OUT_TIME = 16:08:07

我有一个控制器,我的刀片模板文件显示给定人员的所有信息,我想要做的是显示两者之间的时差.

请参阅下面我当前显示0的当前代码

**Time onsite:** {{ date('G:i', strtotime($attrec->out_time)) - date('G:i', strtotime($attrec->in_time)) }}
Run Code Online (Sandbox Code Playgroud)

我有没有理由不能得到正确的数字?

Bog*_*dan 5

您正在将时间戳转换为格式化字符串并尝试计算字符串之间的差异.相反,您应该计算每个结果datetotime(返回基本上是秒的UNIX时间戳)之间的差异,然后格式化该结果:

{{ date('G:i', strtotime($attrec->out_time) - strtotime($attrec->in_time)) }}
Run Code Online (Sandbox Code Playgroud)

您还可以Carbon通过执行以下操作来使用:

{{ (new Carbon($attrec->out_time))->diff(new Carbon($attrec->in_time))->format('%h:%I') }}
Run Code Online (Sandbox Code Playgroud)

这使用diff继承自的方法DateTime,该方法返回一个DateInterval实例.格式字符DateInterval::format与使用的格式字符不同date.这就是格式化字符串的原因%h:%I,相当于G:i.

上面的代码将输出:

0:01
Run Code Online (Sandbox Code Playgroud)

因为您选择格式化小时而没有前导零,并且两个时间戳之间的差异是一分钟(以及一些未显示的备用秒,因为它们未包含在格式化字符串中).