我有一个应用程序,该应用程序可以在登录时及时记录,在注销时可以记录时间。

我的 table 有IN_TIME和OUT_TIME

这些列中的数据示例:

IN_TIME = 16:06:46

OUT_TIME = 16:08:07

我有一个 Controller ,该 Controller 的 Blade 模板文件正在显示给定人员的所有出勤情况,我想做的是显示两者之间的时差。

请参阅下面我的当前代码,当前显示为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

因为您选择了不带前导零的小时格式,并且两个时间戳之间的时差是一分钟(还有一些多余的秒数未显示,因为它们不包含在格式化字符串中)。

关于php - Laravel 5时差,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34616429/

10-12 15:37