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