【发布时间】:2016-09-30 15:44:15
【问题描述】:
我正在尝试计算一个人在某一天工作的小时数。为此,我需要以小时、分钟和秒为单位来获取两个 DateTime 对象之间的差异。到目前为止,我可以像这样成功地做到这一点
$timeIn = new DateTime($time['timeIn']);
$timeOut = new DateTime($time['timeOut']);
$time['hours'] = date_diff($timeIn, $timeOut) -> format("%H:%i:%s");
这似乎工作正常,直到我放入一个员工忘记打卡的测试用例。现在,让我们说
$timeIn = '2016-09-28 14:26:17'
$timeOut = '2016-09-30 09:53:53'
在这种情况下,差异应该是 43:27:36(因为 timeIn 和 timeOut 之间有超过一天的时间)。相反,我得到了 19:27:36(好像它只是截断休息日并返回其余时间)。我怎样才能将这一天添加到小时而不是截断它? (我希望得到 43:27:36,而不是 1 天、19 小时等。所以我试图在 HH:MM:SS 中得到答案)
【问题讨论】:
-
您必须手动进行计算。这解释了如何在几分钟内完成,这离你想要的不太远stackoverflow.com/questions/16776061/…
-
为了更清楚地解释问题,以便获得更好的答案:您只想拥有
HH:MM:SS还是可以在前几天添加前缀?如DD HH:MM:SS?