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