【问题标题】:PHP Convert from strtotime into timePHP从strtotime转换为时间
【发布时间】:2014-02-28 21:15:32
【问题描述】:

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

strtotime($value1) + strtotime($value2)

要添加所有这些,我如何将它们恢复为 hours:mins ?

不能用

date("h:i")

仅当小时

感谢您的帮助。谢谢

【问题讨论】:

  • 将秒(一分钟 60 秒,一小时 60 分钟)转换为小时有多难?
  • 似乎是唯一的方法,我认为必须有一些内置功能。感谢您的回复

标签: php date strtotime


【解决方案1】:

这是一个以HH:MM 格式汇总所有时间值的函数:

function sum_time() {
    $i = 0;
    foreach (func_get_args() as $time) {
        sscanf($time, '%d:%d', $hour, $min);
        $i += $hour * 60 + $min;
    }
    if ($h = floor($i / 60)) {
        $i %= 60;
    }
    return sprintf('%02d:%02d', $h, $i);
}

// use example
echo sum_time('01:05', '00:02', '05:59'); # 07:06

demo

【讨论】:

  • @Digitalfortress:在接受一个答案之前,您应该始终检查所有答案;)
【解决方案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);

希望对你有帮助

【讨论】:

    【解决方案3】:

    函数 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;
    ?>
    

    【讨论】:

      【解决方案4】:

      日期时间的另一种方式

      $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)');
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-31
        • 1970-01-01
        • 1970-01-01
        • 2011-11-20
        • 2021-04-30
        相关资源
        最近更新 更多