将分钟数转换为小时数&几分钟使用PHP

时间:2011-12-19 15:29:24

标签: php time

我有一个名为$final_time_saving的变量,它只是几分钟,例如250。

如何使用以这种格式的PHP将分钟数转换为小时和分钟:

4 hours 10 minutes

13 个答案:

答案 0 :(得分:106)

<?php

function convertToHoursMins($time, $format = '%02d:%02d') {
    if ($time < 1) {
        return;
    }
    $hours = floor($time / 60);
    $minutes = ($time % 60);
    return sprintf($format, $hours, $minutes);
}

echo convertToHoursMins(250, '%02d hours %02d minutes'); // should output 4 hours 17 minutes

答案 1 :(得分:90)

echo date('H:i', mktime(0,257));

答案 2 :(得分:38)

$hours = floor($final_time_saving / 60);
$minutes = $final_time_saving % 60;

答案 3 :(得分:11)

您可以使用DateTime扩展程序实现此目标,这也适用于大于一天(>= 1440)的分钟数:

$minutes = 250;
$zero    = new DateTime('@0');
$offset  = new DateTime('@' . $minutes * 60);
$diff    = $zero->diff($offset);
echo $diff->format('%a Days, %h Hours, %i Minutes');

demo

答案 4 :(得分:9)

@Martin Bean的答案是完全正确的,但在我看来,它需要一些重构来适应普通用户对网站(网络系统)的期望。
我认为当分钟数低于10时,必须加上前导零 例如:10:01,而不是10:1

我将代码更改为接受$time = 0,因为0:00优于24:00。

还有一件事 - 当$time大于1439时,没有任何情况 - 这是23:59而下一个值只是0:00。

function convertToHoursMins($time, $format = '%d:%s') {
    settype($time, 'integer');
    if ($time < 0 || $time >= 1440) {
        return;
    }
    $hours = floor($time/60);
    $minutes = $time%60;
    if ($minutes < 10) {
        $minutes = '0' . $minutes;
    }
    return sprintf($format, $hours, $minutes);
}

答案 5 :(得分:4)

很抱歉提出了一个老话题,但我从其中一个答案中经常使用了一些代码,今天我告诉自己我可以不偷某人的代码就可以做到。我很惊讶它是多么容易。我想要的是在08:30返回510分钟,所以这就是代码所做的。

function tm($nm, $lZ = true){ //tm = to military (time), lZ = leading zero (if true it returns 510 as 08:30, if false 8:30
  $mins = $nm % 60;
  if($mins == 0)    $mins = "0$mins"; //adds a zero, so it doesn't return 08:0, but 08:00

  $hour = floor($nm / 60);

  if($lZ){
    if($hour < 10) return "0$hour:$mins";
  }

  return "$hour:$mins";
}

我使用短变量名,因为我将使用该函数很多,而且我很懒。

答案 6 :(得分:3)

$t = 250;
$h = floor($t/60) ? floor($t/60) .' hours' : '';
$m = $t%60 ? $t%60 .' minutes' : '';
echo $h && $m ? $h.' and '.$m : $h.$m;

4小时10分钟

答案 7 :(得分:2)

最简单的方法是:

    gmdate('H:i', $numberOfSeconds * 60)

答案 8 :(得分:1)

以防万一你喜欢的东西:

echo date('G \h\o\u\r\s i \m\i\n\u\t\e\s', mktime(0, 90)); //will return 1 hours 30 minutes
echo date('G \j\a\m i \m\e\n\i\t', mktime(0, 90)); //will return 1 jam 30 menit

答案 9 :(得分:0)

function hour_min($minutes){// Total
   if($minutes <= 0) return '00 Hours 00 Minutes';
else    
   return sprintf("%02d",floor($minutes / 60)).' Hours '.sprintf("%02d",str_pad(($minutes % 60), 2, "0", STR_PAD_LEFT)). " Minutes";
}
echo hour_min(250); //Function Call will return value : 04 Hours 10 Minutes

答案 10 :(得分:0)

$m = 250;

$extraIntH = intval($m/60);

$extraIntHs = ($m/60);             // float value   

$whole = floor($extraIntHs);      //  return int value 1

$fraction = $extraIntHs - $whole; // Total - int = . decimal value

$extraIntHss =  ($fraction*60); 

$TotalHoursAndMinutesString  =  $extraIntH."h ".$extraIntHss."m";

答案 11 :(得分:0)

感谢@Martin_Bean和@Mihail Velikov的回答。我刚刚拿了他们的答案片段并添加了一些修改来检查,

  1. 如果只有小时数可用且分钟值为空,则只显示小时数。

  2. 同样,如果只有Minutes可用且小时值为空,那么它只会显示几分钟。

  3. 如果分钟= 60,则显示为1小时。如果分钟= 1则相同,输出将为1分钟。

  4. 欢迎更改和编辑。 谢谢。这是代码。

    function convertToHoursMins($ time){

                $hours    = floor($time / 60);
                $minutes  = ($time % 60);
    
    
                if($minutes == 0){
    
                    if($hours == 1){
    
                        $output_format = '%02d hour ';
    
                    }else{
    
                        $output_format = '%02d hours ';
                    }
    
    
                    $hoursToMinutes = sprintf($output_format, $hours);
    
                }else if($hours == 0){
    
                    if ($minutes < 10) {
                            $minutes = '0' . $minutes;
                    }
    
                    if($minutes == 1){
    
                        $output_format  = ' %02d minute ';
    
                    }else{
    
                        $output_format  = ' %02d minutes ';
                    }
    
                    $hoursToMinutes = sprintf($output_format,  $minutes);
    
                }else {
    
                    if($hours == 1){
    
                        $output_format = '%02d hour %02d minutes';
    
                    }else{
    
                        $output_format = '%02d hours %02d minutes';
                    }
    
                    $hoursToMinutes = sprintf($output_format, $hours, $minutes);
                }
    
                return $hoursToMinutes;
            }`
    

答案 12 :(得分:-1)

检查此链接以获得更好的解决方案。 Click here

How to convert hh:mm:ss to minutes

<?php
    if(empty($item)):
?>
         <span>Your cart is empty</span>
<?php
    else:
?>
        <table id="cart_table">
            <tr>
                <th>Item</th>
                <th>Price</th>
                <th></th>
            </tr>
            <?php
                for($i = 0;$i< count($item);$i++):
                    if(!empty($item[$i])):
                        $numRow++; 
            ?>
                        <tr>
                            <td><img src ='images/<?php echo $photo[$i].jpg; ?>'/></td>
                            <td>$<?php echo $item[$i]; ?></td> 
                            <td><button id= "btn" onclick = "deleteFromCart('<?php echo $numRow; ?>')"> Remove</button></td>
                        </tr>
            <?php
                    endif;
                endfor;
            ?>   
        </table>
<?php
    endif;
?>
 <script>
    function deleteFromCart(rowToDelete){
        document.getElementById("cart_table").deleteRow(rowToDelete);
    }
 </script>