numeros - Convierta el número de minutos en horas y minutos con PHP
convertir segundos a horas minutos y segundos excel (12)
Tengo una variable llamada $final_time_saving
que es solo una cantidad de minutos, 250 por ejemplo.
¿Cómo puedo convertir esa cantidad de minutos en horas y minutos usando PHP en este formato?
4 hours 10 minutes
En caso de que quieras algo como:
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
Gracias a @Martin_Bean y @Mihail Velikov responde. Acabo de tomar su fragmento de respuesta y agregué algunas modificaciones para verificar,
Si solo están disponibles las horas solo y el valor de los minutos está vacío, solo se mostrarán horas.
Lo mismo si solo los minutos solo están disponibles y el valor de las horas está vacío, entonces solo se mostrarán los minutos.
Si los minutos = 60, se mostrará como 1 hora. Lo mismo si el minuto = 1, la salida será de 1 minuto.
Los cambios y ediciones son bienvenidos. Gracias. Aquí está el código.
función convertToHoursMins ($ tiempo) {
$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;
}`
La forma más fácil es:
gmdate(''H:i'', $numberOfSeconds * 60)
La respuesta de @Martin Bean es perfectamente correcta, pero desde mi punto de vista necesita algunas refactorizaciones que se ajusten a lo que un usuario normal esperaría de un sitio web (sistema web).
Creo que cuando los minutos están por debajo de 10, se debe agregar un cero a la izquierda.
ex: 10:01, no 10: 1
Cambié el código para aceptar $time = 0
ya que 0:00 es mejor que 24:00.
Una cosa más: no hay ningún caso cuando $time
es más grande que 1439 - que es 23:59 y el siguiente valor es simplemente 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);
}
Perdón por mencionar un tema antiguo, pero utilicé mucho el código de una de estas respuestas, y hoy me dije que podía hacerlo sin robar el código de alguien. Me sorprendió lo fácil que fue. Lo que quería es 510 minutos para volver como 08:30, así que esto es lo que hace el código.
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";
}
Uso nombres cortos de variables porque voy a usar mucho la función, y soy flojo.
Puede lograr esto con la extensión DateTime
, que también funcionará para una cantidad de minutos mayor a un día ( >= 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'');
$hours = floor($final_time_saving / 60);
$minutes = $final_time_saving % 60;
$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";
$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 horas y 10 minutos
<?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
echo date(''H:i'', mktime(0,257));
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