En el post de hoy te enseñaré a convertir una cantidad de segundos a un texto legible que muestra el tiempo en horas, minutos y segundos usando Python.
Por ejemplo, convertir 6000 segundos a 01:40:00, mostrando en formato HH:MM:SS.
Algoritmo
Lo que haremos será extraer, como enteros, los minutos y horas de los segundos.
Primero obtenemos las horas a los que equivalen esos segundos (de manera entera) y restamos esa cantidad extraída. Para esto dividimos los segundos entre 60 entre 60 (sí, dos veces).
Después de eso extraemos los minutos usando la misma técnica (ahora dividiendo entre 60 una vez), y restamos esa cantidad que hemos extraído.
Finalmente para sacar los segundos ya no hacemos ninguna división, pues ya fuimos sustrayendo las horas y minutos, así que el sobrante son los segundos que vamos a usar.
Nota: en la conversión de segundos a horas me parece que se puede optimizar dividiendo entre 3600.
Nota 2: vamos a usar la función para agregar ceros a la izquierda en Python.
Segundos a hora legible en Python
Entonces veamos la función. La misma recibe la cantidad de segundos y devuelve el tiempo legible en formato de horas, minutos y segundos. Algo así como se vería en un temporizador, reloj, cronómetro, etcétera.
"""
https://parzibyte.me/blog
"""
def segundos_a_segundos_minutos_y_horas(segundos):
horas = int(segundos / 60 / 60)
segundos -= horas*60*60
minutos = int(segundos/60)
segundos -= minutos*60
return f"{horas:02d}:{minutos:02d}:{segundos:02d}"
Para usarla podemos usar el siguiente código de ejemplo:
"""
https://parzibyte.me/blog
"""
def segundos_a_segundos_minutos_y_horas(segundos):
horas = int(segundos / 60 / 60)
segundos -= horas*60*60
minutos = int(segundos/60)
segundos -= minutos*60
return f"{horas:02d}:{minutos:02d}:{segundos:02d}"
segundos = [10, 100, 40, 1500, 6000, 60, 59, 100000]
for cantidad_segundos in segundos:
convertido = segundos_a_segundos_minutos_y_horas(cantidad_segundos)
print(f"Los {cantidad_segundos} segundos se convierten a {convertido}")
La salida es como se ve a continuación:
Por aquí te dejo más tutoriales de Python.
Hola, muchisimas gracias. Pregunta, cómo podría hacer si quiero pasar de milisegundos a formato hh:mm:ss:msmsms. Es para pasar una lista de milisegundos a formato SRT de subtitulado. O sea, que haya milisegundos ademas del formato hh:mm:ss y se parte de milisegundos, no de segundos.
Hola. Gracias por sus comentarios. Si tiene alguna consulta o duda, solicitud de creación de un programa, solicitud de vídeo o solicitud de cambio de software estoy para servirle en https://parzibyte.me/#contacto
Saludos!