Преобразуйте число минут в часы и минут с помощью PHP

Мне назвали переменную $final_time_saving который является только многими минутами, 250, например.

Как может я преобразовывать то число минут в часы и минут с помощью PHP в этом формате:

4 hours 10 minutes

62
задан 10 April 2017 в 13:30

12 ответов

<?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
112
ответ дан 31 October 2019 в 13:01
echo date('H:i', mktime(0,257));
96
ответ дан 31 October 2019 в 13:01
$hours = floor($final_time_saving / 60);
$minutes = $final_time_saving % 60;
40
ответ дан 31 October 2019 в 13:01

Можно достигнуть этого с 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');

демонстрация

11
ответ дан 31 October 2019 в 13:01

ответ Боба @Martin совершенно корректен, но в моей точке зрения требуется некоторый рефакторинг для установки тому, что обычный пользователь ожидал бы от веб-сайта (веб-система).
я думаю, что, когда минуты ниже 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);
}
9
ответ дан 31 October 2019 в 13:01
$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 минут

5
ответ дан 31 October 2019 в 13:01

Извините за перевод в рабочее состояние старой темы, но я использовал некоторый код из одного из этих ответов много, и сегодня я сказал мне, что я мог сделать это, не крадя чей-то код. Я был удивлен, насколько легкий это было. То, что я хотел, составляет 510 минут, чтобы быть возвратом как 8:30, таким образом, это - то, что делает код.

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";
}

я использую короткие имена переменной, потому что я собираюсь использовать функцию много, и я ленив.

4
ответ дан 31 October 2019 в 13:01

Самый легкий путь:

    gmdate('H:i', $numberOfSeconds * 60)
3
ответ дан 31 October 2019 в 13:01

На всякий случай Вы хотите к чему-то как:

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
1
ответ дан 31 October 2019 в 13:01

Благодаря @Martin_Bean и @Mihail ответам Velikov. Я просто взял их отрывок ответа и добавил некоторые модификации для проверки,

  1. , Если только Часы, только доступные и мелкое пустое значение, то это отобразит только часы.

  2. То же, если только Минуты, только доступные и пустое значение часов, то это отобразит только минуты.

  3. , Если минуты = 60, то это отобразится как 1 час. То же, если минута = 1, вывод составит 1 минуту.

Изменения и редактирования одобрены.Спасибо. Вот код.

функция 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;
        }`
1
ответ дан 31 October 2019 в 13:01
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
0
ответ дан 31 October 2019 в 13:01
$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";
0
ответ дан 31 October 2019 в 13:01

Другие вопросы по тегам:

Похожие вопросы: