我在获取平均值时遇到了时间计算问题。
我总结了 06:03:05 的通话时间,我想获得 175 次通话的平均值。
date_default_timezone_set('America/Chicago');
$ts = strtotime("06:03:05");
echo date("H:i:s", $ts/175);
我得到:12:26:25
我什至不知道为什么我想出这个非常大的时间平均值。我这样做对吗?请帮忙。
问题在于您的strtotime
通话没有日期组件,默认为当前日期。因此,这$ts
是一个比时间部分的总和大得多的数字;它还包括日期部分。
我会避免使用这样的时间函数。根据小时、分钟和秒计算秒数很简单。一旦你有了它,你就可以date()
像在那里一样使用来回显格式化的时间。
尝试更多类似的东西:
function getTimeAverage($hours, $minutes, $seconds, $division) {
$seconds += ($hours * 3600) + ($minutes * 60);
return $seconds / $division;
}
$average = getTimeAverage(6, 3, 5, 175);
echo gmdate("H:i:s", $average);
一种简单的方法,最多只能工作 24 小时。否则采取 Atlis 方法并寻找一种将秒转换为日期的方法。
$time = '06:03:05';
$seconds = strtotime("1970-01-01 $time UTC");
$average = $seconds/175;
echo gmdate('H:i:s', $average);