我正在尝试计算一个人在给定日期的工作小时数。为此,我需要获取两个 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 中得到答案)
最佳答案
正如 Scott 所建议的,但稍作调整,我们需要自己格式化它,但我们有漂亮的 sprintf
来帮助:
$start = new \DateTime("2016-09-28 14:26:17");
$end = new \DateTime("2016-09-30 09:53:53");
$interval = $end->diff($start);
$time = sprintf(
'%d:%02d:%02d',
($interval->d * 24) + $interval->h,
$interval->i,
$interval->s
);
关于PHP:以小时、分钟和秒为单位获取两个 DateTime 对象之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39795305/