我有一个应用程序,它及时登录记录和退出记录的时间.
我的表有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)) }}
我有没有理由不能得到正确的数字?
您正在将时间戳转换为格式化字符串并尝试计算字符串之间的差异.相反,您应该计算每个结果datetotime
(返回基本上是秒的UNIX时间戳)之间的差异,然后格式化该结果:
{{ date('G:i', strtotime($attrec->out_time) - strtotime($attrec->in_time)) }}
您还可以Carbon
通过执行以下操作来使用:
{{ (new Carbon($attrec->out_time))->diff(new Carbon($attrec->in_time))->format('%h:%I') }}
这使用diff
继承自的方法DateTime
,该方法返回一个DateInterval
实例.格式字符DateInterval::format
与使用的格式字符不同date
.这就是格式化字符串的原因%h:%I
,相当于G:i
.
上面的代码将输出:
0:01
因为您选择格式化小时而没有前导零,并且两个时间戳之间的差异是一分钟(以及一些未显示的备用秒,因为它们未包含在格式化字符串中).