如果在php中给定字符串格式时间,我如何在24小时内添加超过的小时数,分钟数和秒数? 离。
undefined
结果如下: '34:00:15'
答案 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);