这似乎是一个相当简单的问题,但我遇到了麻烦!
在我的数据库中,我有两个有时间的字段。假设一个名为clockin的字段读取“2:29:39 pm”,另一个名为clockout的字段读作“2:29:39 pm”。
然后我还有另外两个领域,一个名为“breakin”,下午2:28:37,分组为“2:28:55 pm”。
我想从中断中减去突破以获得差异,然后取出该数字并从clockin和clockout之间的差值中减去它。
我该怎么做?这是我尝试过的:
$clockout = new DateTime($row['clockout']);
$clockin = new DateTime($row['clockin']);
$diff = $clockout->diff($clockin);
$on_the_clock = sprintf('%d hours, %d minutes, %d seconds', $diff->h, $diff->i, $diff->s);
$breakin = new DateTime($row['breakin']);
$breakout = new DateTime($row['breakout']);
$diff2 = $breakout->diff($breakin);
$break = sprintf('%d hours, %d minutes, %d seconds', $diff2->h, $diff2->i, $diff2->s);
这给了我两个不同,但后来我不知道如何从另一个中减去一个。
感谢您的帮助!
答案 0 :(得分:2)
根据您现有的代码判断我假设您正在运行PHP> 5.3使用DateTime类。
在哪种情况下退房DateTime->sub()。您可以使用它从时钟输出中减去中断返回的DateInterval。然后区分时钟和时钟输出之间的区别。那会给你总的工作时间。
答案 1 :(得分:1)
我已经使用了strtotime()来解决这些问题。它以Unix时间戳的形式生成纯数值。我对DateTime()没有经验,但我更喜欢Unix时间戳,因为它代表秒数,如果需要,可以使用date()将其转换回字符串或用户友好格式。
我发现在数据库中存储Unix时间戳也更容易操作。在需要向用户显示之前,不需要用户友好的格式。
[http://php.net/manual/en/function.strtotime.php] [1]