计算总小时数

时间:2017-07-07 16:43:00

标签: php

如果在php中给定字符串格式时间,我如何在24小时内添加超过的小时数,分钟数和秒数? 离。

undefined

结果如下: '34:00:15'

1 个答案:

答案 0 :(得分:0)

您无法使用典型的日期类(如DateTime)或函数(如date())来输出超过24小时。所以您必须这样做手动。

首先,您需要将时间设置为秒,以便您可以轻松地将它们组合在一起。您可以使用explode函数获取小时,分钟和秒,并将这些值乘以所需的秒数。 (60秒是1分钟.60 * 60秒是1小时)。

然后您需要输出总小时数,分钟数和秒数。这可以通过划分相当容易地实现(再次1小时为60 * 60秒,因此将秒数除以60 * 60以获得小时数)和模数运算符(%)以获得&# 34;其余"分钟和秒钟。

<?php
// Starting values
$time1 = "10:50:00";
$time2 = "24:00:15";

// First, get the times into seconds
$time1 = explode(":", $time1);
$time1 = $time1[0] * (60*60)    // Hours to seconds
            + $time1[1] * (60)  // Minutes to seconds
            + $time1[2];        // Seconds

$time2 = explode(":", $time2);
$time2 = $time2[0] * (60*60)    // Hours to seconds
            + $time2[1] * (60)  // Minutes to seconds
            + $time2[2];        // Seconds

// Add the seconds together to get the total number of seconds
$total_time = $time1 + $time2;

// Now the "tricky" part: Output it in the hh:mm:ss format.
// Use modulo to determine the hours, minutes, and seconds.
// Don't forget to round when dividing.
print 
    //Hours
    floor($total_time / (60 * 60)) .
    // Minutes
    ":" . floor(($total_time % (60 * 60)) / 60) .
    // Seconds
    ":" . $total_time % 60;

    // The output is "34:50:15"
?>

因为您是PHP的新手,我使用函数而不是DateTime来完成此操作,因为PHP中的OOP可能会让您更难理解这里发生的事情。但是,如果您在PHP中学习OOP,使用DateTime重写我的答案可能是一个有趣的练习。

修改:我已经意识到您可以使用date()来获取分钟数和秒数,而不是模数。如果您愿意,可以使用以下内容替换最后一个print语句:

print 
    //Hours
    floor($total_time / (60 * 60)) .
    // Minutes
    ":" . date('i', $total_time) .
    // Seconds
    ":" . date('s', $total_time);