【问题标题】:How to get time average如何获得时间平均值
【发布时间】:2013-06-30 13:19:12
【问题描述】:

我在获取平均值时遇到了时间计算问题。

我总结了 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

我什至不确定我为什么要得出如此巨大的时间平均值。我这样做对吗?请帮忙。

【问题讨论】:

  • 你不能像整数一样使用$ts来计算$ts/175

标签: php average


【解决方案1】:

问题在于您的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);

【讨论】:

  • 必须是gmdate('H:i:s', $average);。但这最多只能工作 24 小时。
  • 好点,谢谢。我已经编辑了答案。 - 我住在格林威治标准时间,所以我倾向于忘记这些时区问题:)
  • 哦.. 我现在明白了.. 非常感谢... Atli 和 redreggae
【解决方案2】:

一种简单的方法,最多只能工作 24 小时。否则采取 Atlis 方法并寻找一种将秒转换为日期的方法。

$time = '06:03:05';
$seconds = strtotime("1970-01-01 $time UTC");
$average = $seconds/175;
echo gmdate('H:i:s', $average);

【讨论】:

    猜你喜欢
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-11
    • 2012-08-16
    • 1970-01-01
    • 2012-03-18
    • 2021-03-27
    相关资源
    最近更新 更多