Convertir tiempo en horas, minutos y segundos en Python

En este tutorial, hablaremos sobre el tiempo. No te preocupes, no es un aburrido tutorial de historia, más bien estaremos viendo diferentes formas de convertir el tiempo en segundos a tiempo en horas, minutos y segundos.

De ahora en adelante, nos referiremos al tiempo en horas, minutos y segundos como tiempo en el formato preferido

Se verá así:

2:46:40

Vamos a tomar un poco de “tiempo” y pensar en el problema que tenemos. Sin duda, Python tiene módulos increíbles para hacer la conversión por nosotros. Pero intentemos escribir nuestro propio programa primero antes de pasar a los módulos incorporados.

Creando una función personalizada para convertir el tiempo en horas, minutos y segundos

Para escribir nuestra propia función de conversión, primero debemos pensar en el problema matemáticamente.

¿Cómo se convierten los segundos al formato preferido?

Necesitas obtener el valor de horas, minutos y segundos

Vamos a asumir que el tiempo en segundos no supera el número total de segundos en un día. Si lo hace, lo dividiremos por el número total de segundos en un día y tomaremos el resto.

Esto se representa matemáticamente como:

seconds = seconds % (24 * 3600)

El operador % devuelve el resto.

24*3600 desde que una hora tiene 3600 segundos (60*60) y un día tiene 24 horas.

Después de esto, podemos proceder y calcular el valor de la hora a partir de los segundos.

1. Obtén el valor de la hora

Para obtener el valor de la hora a partir de los segundos, usaremos el operador de división entera (//).

Devuelve la parte entera del cociente.

Dado que necesitamos el número de horas, dividiremos el número total de segundos (n) por el número total de segundos en una hora (3600).

Matemáticamente esto se representa como:

hour = seconds // 3600

Después de esto, necesitamos calcular los minutos.

2. Obtén el valor del minuto

Para calcular el valor de los minutos, primero debemos dividir el número total de segundos por 3600 y tomar el resto.

Matemáticamente esto se representa como:

 seconds = seconds % 3600

Ahora, para calcular el valor de los minutos a partir del resultado anterior, usaremos nuevamente el operador de división entera.

minutes = seconds // 60

A minute has sixty seconds hence we floor the seconds value with 60.

Después de calcular el valor del minuto, podemos avanzar para calcular el valor de los segundos para nuestro formato preferido.

3. Obtener el valor de los segundos

Para obtener el valor de los segundos, nuevamente necesitamos dividir el número total de segundos por el número de segundos en un minuto (60) y tomar el resto.

Matemáticamente, esto se hace de la siguiente manera:

 seconds = seconds % 60

Esto nos dará el valor del segundo que necesitamos para nuestro formato preferido.

4. Código completo

Vamos a compilar el conocimiento anterior en una función de Python.

def convert_to_preferred_format(sec):
   sec = sec % (24 * 3600)
   hour = sec // 3600
   sec %= 3600
   min = sec // 60
   sec %= 60
   print("seconds value in hours:",hour)
   print("seconds value in minutes:",min)
   return "%02d:%02d:%02d" % (hour, min, sec) 

n = 10000
print("Time in preferred format :-",convert(n))

Salida:

seconds value in hours: 2
seconds value in minutes: 46
Time in preferred format :- 02:46:40

Usando el módulo Time

Ahora veamos un módulo integrado que nos permite convertir segundos en nuestro formato preferido en una línea de código.

El módulo de tiempo define la época como el 1 de enero de 1970, 00:00:00 (UTC) en sistemas Unix (dependiente del sistema). La época es básicamente el inicio del tiempo para una computadora. Piensa en ello como el día 0. Cuando convertimos segundos usando el módulo de tiempo, esta época se utiliza como punto de referencia.

Para mostrar la época en tu sistema, usa la siguiente línea de código:

time.gmtime(0)

Para convertir segundos en el formato preferido, utiliza la siguiente línea de código:

time.strftime("%H:%M:%S", time.gmtime(n))

Esta línea toma el tiempo en segundos como ‘n’ y te permite mostrar por separado la hora, minuto y segundo.

El código completo en Python es el siguiente:

import time
n=10000
time_format = time.strftime("%H:%M:%S", time.gmtime(n))
print("Time in preferred format :-",time_format)

Salida:

Time in preferred format :- 02:46:40

El módulo de tiempo también te ofrece la opción de mostrar información adicional como el día, mes y año.

%a display abbreviated weekday name.
%A display full weekday name.
%b display abbreviated month name.
%B display full month name.
%c display the appropriate date and time representation.
%d display day of the month as a decimal number [01,31].

Intentemos usando %a y %b.

import time
n=100000000000
time_format = time.strftime("Day: %a, Time: %H:%M:%S, Month: %b", time.gmtime(n))
print("Time in preferred format :-",time_format)

Salida:

Time in preferred format :- Day: Wed, Time: 09:46:40, Month: Nov

Usando el módulo de Fecha y Hora

También puedes utilizar el método timedelta bajo el módulo DateTime para convertir segundos en el formato preferido.

Muestra el tiempo en días, horas, minutos y segundos transcurridos desde la época.

El código de Python para convertir segundos al formato preferido utilizando el módulo Datetime es el siguiente:

import datetime
n= 10000000
time_format = str(datetime.timedelta(seconds = n))
print("Time in preferred format :-",time_format)

Salida:

Time in preferred format :- 115 days, 17:46:40

Conclusión

Este tutorial exploró tres formas diferentes de convertir segundos en horas, minutos y segundos. En términos generales, hay dos enfoques para abordar el problema.

Puedes escribir tu propia función o utilizar un módulo incorporado. Comenzamos escribiendo nuestra propia función y luego examinamos los módulos time y DateTime.

Source:
https://www.digitalocean.com/community/tutorials/python-convert-time-hours-minutes-seconds