小时,PHP的分钟差异

时间:2018-06-15 09:31:05

标签: php hour minute

我正在寻找Php的解决方案。

我有一个hh:mm:ss格式的任务总时间。 (日期并不重要)。 我也以hh:mm:ss格式进入每个工作时间。现在我必须以hh:mm:ss格式找出剩余时间。

实施例

16:00:00是指定的完成任务的小时数。 在不同的日期,一名员工工作时间为13:15:00 现在我需要格式为2:45:00的剩余时间。

如果附上日期,我们可以这样做

datetime1 = new DateTime('2014-02-11 04:04:26 AM');
$datetime2 = new DateTime('2014-02-11 05:36:56 AM');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%h')." Hours ".$interval->format('%i')." Minutes";

在我的情况下,没有日期。 PHP中是否有任何功能可以找到这种类型的hh:mm:ss的区别?

3 个答案:

答案 0 :(得分:0)

您必须将其转换为时间戳,然后计算差异并将该差异格式化为正常日期。

这样的事情:

function dateDifference($date_1 , $date_2 , $differenceFormat = '%a' )
{
    $datetime1 = date_create($date_1);
    $datetime2 = date_create($date_2);

    $interval = date_diff($datetime1, $datetime2);

    return $interval->format($differenceFormat);

}

答案 1 :(得分:0)

将您的HH:MM:SS格式转换为持续时间(以秒为单位),减去它们,将它们格式化为HH:MM:SS:

function str_to_seconds($duration) {
    list($h, $m, $s) = explode(':', $duration);
    return $s + ($m * 60) + ($h * 3600);
}

function seconds_to_str($seconds) {
    return sprintf('%02d:%02d:%02d', $seconds / 3600, $seconds / 60 % 60, $seconds % 60);
}

echo seconds_to_str(str_to_seconds('16:00:00') - str_to_seconds('13:15:00'));

答案 2 :(得分:0)

超短版

$secondsDiff = abs(strtotime("2014-02-11 04:04:26 AM") - strtotime("2014-02-11 05:36:56 AM"));
echo sprintf("%02d", floor($secondsDiff / 3600)) . ":" . sprintf("%02d", floor($secondsDiff / 60 %60)) . ":" . sprintf("%02d", ($secondsDiff % 60));