PHP从strtotime转换为时间

时间:2014-02-04 18:22:09

标签: php date strtotime

我需要添加多个时间值,如小时:分钟,所以我使用

strtotime($value1) + strtotime($value2)

要添加所有这些,我怎么把它们放回几个小时:分钟?

无法使用

date("h:i")

它仅在小时< 24。

感谢您的帮助。感谢

4 个答案:

答案 0 :(得分:3)

这是一个以<{1}}格式总结所有时间值的函数:

HH:MM

demo

答案 1 :(得分:2)

试试这个:

function time_convert($s) { 
    $m = 0; $hr = 0; $td = "now";
    if ($s > 59) { 
        $m = (int)($s/60); 
        $s = $s-($m*60); // sec left over 
        $td = "$m min"; 
    } 
    if ($m > 59) { 
        $hr = (int)($m / 60); 
        $m = $m - ($hr*60); // min left over 
        $td = "$hr hr"; 
        if ($hr > 1) {
            $td .= "s";
        }
        if ($m > 0) {
            $td .= ", $m min";
        }
    } 

    return $td; 
} 

并使用它:

$time = (int) strtotime($v1) + strtotime($v2);
echo time_convert($time);

愿它有所帮助

答案 2 :(得分:1)

函数strtotime()返回自1970年1月1日00:00:00 UTC以来的秒数。因此,添加此函数的返回值可能无法达到预期效果。

我们可以操作字符串并执行一些基本的算术运算,而不是使用日期函数:

<?php
$value1 = "12:44";
$value2 = "13:47";

$arr1 = explode(':', $value1);
$arr2 = explode(':', $value2);

$totalMinutes = (int)$arr1[0] * 60 + (int)$arr1[1] + (int)$arr2[0] * 60 + (int)$arr2[1];

$hours = (int) ($totalMinutes / 60);
$minutes = $totalMinutes % 60; // Modulus: remainder when dividing with 60

echo $hours . ':' . $minutes;
?>

答案 3 :(得分:0)

DateTime的另一种方式

$dt1 = new DateTime($value1);
$dt2 = new DateTime($value2);
$interval = $dt1->diff($dt2);
echo $interval->format('%a day(s) %h hour(s) %i minute(s)') . '<br />';
echo ($interval->format('%a') * 24 + $interval->format('%h')) . ' hour(s) ';
echo $interval->format('%i minute(s)');