Módulo time

Teoria Completa

Usando dados de tempo e data em Python

Fala aí, seus doido! Primeiramente, queria te dizer que o módulo tem o nome em inglês (time = tempo). Vamos usa-lo pra (adivinha só?!) pegar dados sobre tempo e data. Então, antes da gente começar a estudar sobre as funções fornecidas pelo módulo, vamos importar no nosso código!

Não esquece que as importações de módulos devem ficar nas primeiras linhas do seu programa, ok?!

Cara, vou te contar uma coisa que você precisa entender mas nem sempre precisa usar. Acontece que todos os computadores sabem quantos segundos se passaram desde 00h de 1 de janeiro de 1970. Tu não precisa lembrar dessa data, ok?! Porém, a ideia é você se ligar que é tudo uma questão de referência. Uma das aplicações legais desse tipo de informação é pra saber o tempo de execução do seu programa.

Esse programa calcula o quadrado de todos os números entre 0 e 2000000 (muita coisa). No fim, será exibido a variável “tempo_decorrido”, que vai estar armazenando o tempo, em segundos, que seu programa demorou pra executar. Então, a primeira função que a gente aprendeu foi a time.time().

Mas e pra usar datas?

Cara, se a gente sabe a quantidade de segundos, então a gente pode converter pra quantidade de dias, meses, anos, etc.. Assim, podemos saber a data em que nós estamos! Mas fazer todas essas conversões é uma tarefa bastante tediosa. No entanto, pra salvar nossas vidas, o módulo trás consigo funções que fazem essas conversões.

Função localtime

A função localtime converte um número de segundos pra um formato legível de data. Olha:

Assim, você consegue obter a data atual de quando o programa está sendo executado. Ao executar esse programa, o resultado foi esse:

Isso porque eu tô escrevendo esse texto no dia 30/11/2019, às 19h13. Talvez você não se lembre dos nomes certinhos de cada informação na estrutura retornada por localtime(), mas você pode descobrir malandramente!

O resultado desse código te mostra o nome de cada uma das propriedades.

Esse é o resultado se você tentar printar o retorno da função time.localtime(). É meio bagunçado, mas dá pra você olhar o nome da propriedade que você quer.

Mas se liga, essa função, quando a gente usa sem nada dentro dos parênteses, retorna a data atual pra gente. Mas também dá pra usar essa função tendo um número específico de segundos.

Dessa vez, nós estamos perguntando os dados da data de 1000000000 corridos desde 1970, ok?!

Isso significa que, desde o início do ano 1970 até o dia 08/09/2001, às 22h46m40s, haviam decorridos 1000000000 segundos.

Função sleep

Cara, essa função faz o seu programa esperar um determinado número de segundos.

Ao executar esse programa, você vai notar que o segundo print vai ser executado 7 segundos após o primeiro.

Cara, essas são as funções que você precisa saber pra mandar bem na sua prova, ok?! Te desejo todo sucesso!

Tô te esperando nos exercícios de fixação, emmmm!

Expandir

Exercício Resolvido #1

Pense Python, Capítulo 5.14, Ex 5.1

O módulo time fornece uma função, também chamada time, que devolve a hora média de Greenwich na “época”, que é um momento arbitrário usado como ponto de referência. Em sistemas UNIX, a época é primeiro de janeiro de 1970.

>>> import time

>>> time.time()

1437746094.5735958

Escreva um script que leia a hora atual e a converta em um tempo em horas, minutos e segundos, mais o número de dias desde a época.

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

Fala aí, seu doido! Vamos começar importando o módulo time, porque a gente vai precisar dele.

E, em seguida, bora salvar em uma variável o tempo atual utilizando a função time(), que pertence ao módulo time (mesmo nome hahaha).

Agora a gente precisa, a partir dessa variável (que agora tem a quantidade de segundos desde 01/01/1970), dizer quantas horas, minutos e segundos se passaram. Vamos começar extraindo as horas da quantidade total de segundos que a gente tem!

Passo 2

Vamos começar com os minutos. A gente tem o tempo total em segundos, mas a gente tá ligado que a cada 60 segundos, podemos considerar um minuto.

Pronto! Já temos o correspondente em minutos. Mas repara que a gente pegou a divisão inteira (//). Ou seja, não queremos minutos quebrados, né? (Já pensou fazer miojo em 3.14159 minutos? hahaha).

Mas agora, vamos criar outra variável chamada "segundos" pra salvar os segundos restantes. E falando de resto, você se ligou no que a gente vai precisar usar, né?

Isso aí, existe o operador de resto (%). Show! Mas ainda precisamos das horas...

Passo 3

Cara, a gente converteu os segundos em minutos. Pra transformar em horas, a gente só precisa fazer exatamente a mesma coisa mas, em vez de usar os segundos, vamos usar os minutos!

Pronto! Assim, a gente pegou todas as horas que tínhamos em minutos e deixou a variável "minutos" só com o resto. Por último, a gente precisa calcular o número de dias.

Passo 4

Pra calcular a quantidade de dias, podemos pegar as horas atuais e dividir por 24.

A gente também atualizou o número de horas pro resto… E, agora, falta só a gente exibir.

Passo 5

Pra exibir alguma coisa pro usuário, usamos a famigerada função print(), né?

Obs: usamos formatação de string dentro do print, que é muito importante você saber… Caso não esteja familiarizado, tem um tópico que fala tudo sobre aqui na playlist, tá? olha lá, é rapidinho…

Agora vou executar pra ver o que acontece.

Pronto! Parece tudo ok, então finalizamos o exercício, mano!!!

Resposta

Exercício Resolvido #2

Elaboração própria

Um mercado contratou você para criar um programa que confere e classifica a validade de seus produtos. Seu programa deve receber do usuário o dia, mês e ano da validade e responder:

  • "Tá tranquilo", caso falte mais de 3 meses para o vencimento.
  • "Alerta", caso falte menos de 3 meses e mais de um mês para o vencimento.
  • "Ferrou", caso falte menos de um mês para o vencimento.
  • "Joga esse bagulho fora!", caso esteja vencido.

Você deve, obrigatoriamente, escrever e usar a função checaDiferencaDeTempo(), que recebe dia, mês, ano de validade e o tempo atual desde 01/01/1970.

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

Fala aí, seu doido! A gente já tá ligado que vamos precisar usar o módulo time pra resolver essa questão, e sempre é uma boa ideia fazer as importações no início. Então, bora lá!

Agora, bora fazer a função com o nome que foi pedido.

Passo 2

Olha, tá escrito até os parâmetros que a função tem que ter, então vamos só obedecer, ok? Tipo assim:

Colocamos igualzinho o enunciado pediu. Agora, bora desenvolver a função. A gente pode converter o dia, mês e ano pra segundos e ai a gente consegue fazer a subtração dos tempos. Pra isso, vamos usar a função strptime() do módulo time. Essa função consegue converter um tempo em data, e recebe como parâmetro duas strings: o texto e a formatação. Olha:

Criamos a variável validade e colocamos dentro dela o resultado da função strptime. No primeiro parâmetro a gente passou um texto (usei formatação de string, percebeu? tem que estar ligado nisso porque é importante!!!). No segundo, passei uma string no mesmo formato mas, em vez dos dados reais, usei representações %d para dia, %m para mês e %Y para ano. Assim, a gente consegue dizer pra biblioteca onde estão as informações que a gente passou na string! Mas essa função tá retornando uma tupla com várias informações sobre a data, sendo que a gente só quer a quantidade de segundos em relação à época (01/01/1970). Pra isso, vamos usar a função mktime.

quer a diferença de dias. Pra fazer converter segudos pra dias, a gente pode dividir por (60*60*24).

Pronto! Agora, a gente pega a diferença em segundos, converte pra dias e retorna essa diferença. Falta a gente finalizar nosso programa!

Passo 3

O enunciado fala pra gente pegar do usuário os dados de dia, mês e ano. Vamos usar o input pra isso.

Depois de pegar os dados e os converter pra inteiro, a gente chama a função que criamos pra descobrir quantos dias de diferença tem entre a data de validade e a data atual. Vamos ver em qual classificação o bagulho entra agora…

E pronto! Finalizamos o exercício, brother! Valeuu

Resposta

Exercício Resolvido #3

Elaboração própriaEnunciadoEscreva um programa que recebe uma função qualquer e calcule uma aproximação de sua raiz a partir do método Newton-Raphson. O método diz que a aproximação pode ser dada a partir da iteração da seguinte fórmula:Passo 1Resposta
MOSTRAR SOLUÇÃO COMPLETA

Resposta

Exercício Resolvido #4

Elaboração própria.

Suponha que uma empresa possui uma máquina que em determinadas situações superaquece o seu motor, e, para que o equipamento seja resguardado, um dos engenheiros responsáveis por essa máquina pausa o seu funcionamento por alguns segundos para resfriá-la.

Visando economizar tempo e esforço, você foi contratado para desenvolver um programa integrado com a máquina capaz de pausar o funcionamento dela por uma quantidade de segundos determinados pelo engenheiro diretamente de sua sala.

Defina a função r e s f r i a M o t o r e crie um programa teste que pause o funcionamento da máquina por uma quantidade de segundos definida pelo engenheiro responsável.

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

Como iremos pausar o programa, a primeira coisa que nós devemos fazer é importar o módulo time.

Passo 2

Com o módulo time devidamente importado, nós já somos capazes de definir a função r e s f r i a M o t o r :

Para isso, basta utilizarmos o comando def para definirmos a função denominada r e s f r i a M o t o r que terá como único parâmetro o tempo de pausa definido pelo engenheiro. Com isso, utilizaremos a função s l e e p