22 Votos

PHP: Convertir Minutos a Horas y Minutos (0:00)

Pregunta de Invitado | 10/01/2024 a las 11:41

En uno de mis scripts PHP, tengo un valor de tiempo especificado en minutos. Me gustaría mostrar este valor en mi sitio web en la forma horas:minutos. Así, por ejemplo, "1:37 horas" en lugar de "97 minutos".

Eso significa que necesito alguna función que pueda transformar el valor de los minutos al formato h:min. ¿Existe alguna función disponible en PHP para dicha conversión? Preferiblemente, lo más simple posible.

ResponderPositivoNegativoFechaVotos
2Mejor Respuesta2 Votos

Puede utilizar una combinación de las funciones PHP date() y mktime() para esta conversión.

Por ejemplo, de esta manera:

echo date('G:i', mktime(0, 97)); // 1:37
echo date('H:i', mktime(0, 97)); // 01:37

Como primer parámetro, mktime() toma el número de horas, como segundo parámetro (opcional) los minutos; después de eso segundos, meses, días y años.

Cuando se llama a mktime() con mktime(0, 97), esto corresponde a 0 horas y 97 minutos, que se pueden salir en un formato personalizado usando date(). Al usar la cadena de formato "G:i" obtendrá "1:37", con "H:i" "01:37", como ejemplo.

Por supuesto, también puede pasar el número de segundos [mktime(0, 0, 120) = 120 segundos] o puede mezclar los argumentos [mktime(1, 2, 3) = 1 hora, 2 minutos y 3 segundos]. Del mismo modo, también puede utilizar todos los demás caracteres en su cadena de formato (por ejemplo, "s" para segundos con ceros a la izquierda, etc.).
10/01/2024 a las 21:06

ResponderPositivo Negativo
11 Voto

Alternativamente, también puede usar la función sprintf() para obtener el mismo resultado.

Aquí hay un ejemplo:

$t = 97;
echo sprintf("%d:%02d",   floor($t/60), $t%60);  // 1:37
echo sprintf("%02d:%02d", floor($t/60), $t%60);  // 01:37

Pasamos a esta función la cadena de formato así como los valores que deben reemplazarse en la cadena.

Aquí, en las cadenas de formato usamos %d para valores enteros simples y %02d para valores enteros que se generarán con dos dígitos usando ceros a la izquierda.

Como valores, pasamos floor($t/60) y $t%60. Con dividir por 60 y recortar los decimales, obtenemos el número de horas. En consecuencia, extraemos el resto de la división calculando $t%60 para obtener el número de minutos con esto.
10/01/2024 a las 22:08

ResponderPositivo Negativo
Responder

Temas Relacionados

MySQL: Saltos de Línea en MySQL

Consejo | 0 Comentarios

Aviso Importante

Por favor tenga en cuenta: Las contribuciones publicadas en askingbox.com son contribuciones de los usuarios y no deben reemplazar el asesoramiento profesional. No son verificados por independientes y no reflejan necesariamente la opinión de askingbox.com. Aprende más.

Participar

Haga su propia pregunta o escriba su propio artículo en askingbox.com. He aquí cómo.