【发布时间】:2013-09-16 00:01:44
【问题描述】:
我正在为我的老板开发一个 Timeclock 应用程序,我将上班和下班时间存储为 DateTime 和 Timestamp。
下面是一个简单的函数,用于计算用户上班和下班日期时间之间的持续时间。
在演示中,您可以看到结果是 15:11:18,即使两个日期之间相隔 5 天。我知道我可以简单地让函数显示天数,但我的老板不想显示天数,而是应该显示 2 个 DateTimes 之间的总小时、分钟、秒数而不显示天数。
谁能指出我正确的方向或帮助它显示适当的时间?
例如,额外的 2 天将使小时数增加 48 小时而不是 2 天
public function dateTimeDifference($startDatetime, $endDatetime, $format = '%H:%I:%S')
{
$startDatetime2 = new DateTime($startDatetime, $this->timeZone);
$endDatetime2 = new DateTime($endDatetime, $this->timeZone);
$interval = $startDatetime2->diff($endDatetime2);
return $interval->format($format);
}
$startDatetime = '2013-09-10 07:15:48 pm';
$endDatetime = '2013-09-15 10:27:06 am';
echo dateTimeDifference($startDatetime, $endDatetime)
// Result: 15:11:18
【问题讨论】:
-
另一种方法是将此类任务移至 DBMS。这些数据更准确。