Converter tempo em horas, minutos e segundos em Python

Neste tutorial, estaremos falando sobre o tempo. Não se preocupe, este não é um tutorial chato de história. Em vez disso, estaremos analisando diferentes maneiras de converter o tempo em segundos para o tempo em horas, minutos e segundos.

Daqui para frente, estaremos nos referindo ao tempo em horas, minutos e segundos como tempo no formato preferido.

Isso se parecerá assim:

2:46:40

Vamos dedicar um pouco de ‘tempo’ para pensar sobre o problema em questão. Sem dúvida, o Python possui módulos incríveis para fazer a conversão para nós. Mas vamos tentar escrever nosso próprio programa antes de passarmos para os módulos integrados.

Construindo uma função personalizada para converter o tempo em horas, minutos e segundos

Para escrever nossa própria função de conversão, primeiro precisamos pensar no problema matematicamente.

Como converter segundos para o formato preferido?

Você precisa obter os valores de horas, minutos e segundos.

Vamos supor que o tempo em segundos não ultrapasse o número total de segundos em um dia. Se ultrapassar, dividiremos pelo número total de segundos em um dia e pegaremos o resto.

Isso é representado matematicamente como:

seconds = seconds % (24 * 3600)

O operador % fornece o resto.

24*3600 desde que uma hora tem 3600 segundos (60*60) e um dia tem 24 horas.

Após isso, podemos prosseguir e calcular o valor da hora a partir dos segundos.

1. Obter o valor da hora

Para obter o valor da hora a partir dos segundos, vamos usar o operador de divisão inteira (//).

Ele retorna a parte inteira do quociente.

Como precisamos do número de horas, vamos dividir o número total de segundos (n) pelo número total de segundos em uma hora (3600).

Matematicamente, isso é representado como:

hour = seconds // 3600

Depois disso, precisamos calcular os minutos.

2. Obter o valor dos minutos

Para calcular o valor dos minutos, precisamos primeiro dividir o número total de segundos por 3600 e pegar o resto.

Matematicamente, isso é representado como:

 seconds = seconds % 3600

Agora, para calcular o valor dos minutos a partir do resultado acima, vamos usar novamente o operador de divisão inteira.

minutes = seconds // 60

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

Após calcular o valor dos minutos, podemos avançar para calcular o valor dos segundos para o nosso formato preferido.

3. Obter o valor dos segundos

Para obter o valor dos segundos, novamente precisamos dividir o número total de segundos pelo número de segundos em um minuto (60) e pegar o resto.

Matematicamente, isso é feito da seguinte forma:

 seconds = seconds % 60

Isso nos dará o valor dos segundos que precisamos para o nosso formato preferido.

4. Código completo

Vamos compilar o conhecimento acima em uma função 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))

Saída:

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

Usando o módulo Time

Agora vamos olhar para um módulo integrado que nos permite converter segundos em nosso formato preferido em uma linha de código.

O módulo time define a época como 1 de janeiro de 1970, 00:00:00 (UTC) em sistemas Unix (dependente do sistema). A época é basicamente o início do tempo para um computador. Pode ser considerado como o dia 0. Sempre que convertemos segundos usando o módulo de tempo, esta época é usada como ponto de referência.

Para exibir a época em seu sistema, use a seguinte linha de código:

time.gmtime(0)

Para converter segundos no formato desejado, use a seguinte linha de código:

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

Esta linha recebe o tempo em segundos como ‘n’ e permite que você exiba separadamente a hora, minuto e segundo.

O código Python completo é o seguinte:

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

Saída:

Time in preferred format :- 02:46:40

O módulo de tempo também oferece a opção de exibir informações extras, como dia, mês e ano.

%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].

Vamos tentar usar %a e %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)

Saída:

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

Usando o módulo Datetime

Você também pode usar o método timedelta no módulo DateTime para converter segundos no formato desejado.

Ele exibe o tempo decorrido em dias, horas, minutos e segundos desde a época.

O código em Python para converter segundos no formato desejado usando o módulo Datetime é o seguinte:

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

Saída:

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

Conclusão

Este tutorial abordou três maneiras diferentes de converter segundos em horas, minutos e segundos. De maneira geral, existem duas abordagens diferentes para resolver o problema.

Você pode escrever sua própria função ou usar um módulo embutido. Começamos escrevendo nossa própria função e depois exploramos os módulos time e DateTime.

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