Converter tempo em horas, minutos e segundos em Python

Neste tutorial, vamos falar sobre o tempo. Não se preocupe, este não é um tutorial chato de história; em vez disso, vamos explorar diferentes maneiras de converter tempo em segundos para tempo em horas, minutos e segundos.

Daqui para frente, vamos nos referir ao tempo em horas, minutos e segundos como tempo no formato preferido

. Vai parecer assim:

2:46:40

Vamos pegar algum ‘tempo’ e pensar no problema em questão. Sem dúvida, o Python tem 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 desejado?

Você precisa obter o valor de horas, minutos e segundos.

Vamos assumir que o tempo em segundos não ultrapassa o número total de segundos em um dia. Se ultrapassar, vamos dividi-lo pelo número total de segundos em um dia e pegar o resto.

Isso é representado matematicamente como:

seconds = seconds % (24 * 3600)

% o operador dá o resto.

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

Depois disso, 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 do minuto

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, usaremos novamente o operador de divisão inteira.

minutes = seconds // 60

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

Depois de calcular o valor em 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, precisamos novamente 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 fornecerá o valor dos segundos que precisamos para o nosso formato preferido.

4. Código completo

Vamos compilar o conhecimento acima em uma função em 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 ver um módulo embutido que nos permite converter segundos em nosso formato preferido em apenas uma linha de código.

O módulo de tempo 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. Pense nisso como o dia 0. Sempre que convertemos segundos usando o módulo de tempo, essa é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 preferido, use a seguinte linha de código:

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

Esta linha pega o tempo em segundos como ‘n’ e depois permite que você exiba os valores de hora, minuto e segundo separadamente.

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)

Resultado:

Time in preferred format :- 02:46:40

O módulo de tempo também oferece a opção de exibir algumas 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)

Resultado:

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 sob o módulo de DateTime para converter segundos no formato preferido.

Ele exibe o tempo como dias, horas, minutos e segundos decorridos desde a época.

O código Python para converter segundos no formato preferido 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 examinou três maneiras diferentes de converter segundos em horas, minutos e segundos. Existem basicamente duas abordagens diferentes para resolver o problema.

Ou você escreve sua própria função ou usa um módulo embutido. Começamos escrevendo nossa própria função e então examinamos o módulo time e DateTime.

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