Introdução
O módulo datetime do Python oferece uma variedade de classes para manipular datas e horas. Neste laboratório, exploraremos algumas das classes e funções mais utilizadas deste módulo e aprenderemos como usá-las para realizar diversas tarefas, como trabalhar com datas, horas e deltas de tempo.
Conquistas
- Módulo
datetime
Importando o Módulo Datetime
Para começar a trabalhar com o módulo datetime, primeiro precisamos importá-lo.
Abra uma nova sessão do interpretador Python:
python3
Isso pode ser feito usando a seguinte linha de código:
import datetime
Trabalhando com Datas
O módulo datetime fornece a classe date para trabalhar com datas. Para criar um objeto de data representando uma data específica, podemos usar o construtor date(), que recebe três argumentos: o ano, o mês e o dia. Por exemplo:
d = datetime.date(2021, 12, 31)
print(d)
Isso criará um objeto de data representando 31 de dezembro de 2021 e o imprimirá no formato "AAAA-MM-DD".
Trabalhando com Horas
Além de datas, o módulo datetime também fornece a classe time para trabalhar com horas. Para criar um objeto de tempo representando uma hora específica, podemos usar o construtor time(), que recebe três argumentos: a hora, o minuto e o segundo. Por exemplo:
t = datetime.time(12, 30, 15)
print(t)
Isso criará um objeto de tempo representando 12:30:15 PM e o imprimirá no formato "HH:MM:SS".
Combinando Datas e Horas
Para trabalhar com uma data e uma hora, podemos usar a classe datetime, que combina uma data e uma hora. Para criar um objeto datetime representando uma data e hora específicas, podemos usar o construtor datetime(), que recebe seis argumentos: o ano, o mês, o dia, a hora, o minuto e o segundo. Por exemplo:
dt = datetime.datetime(2021, 12, 31, 12, 30, 15)
print(dt)
Isso criará um objeto datetime representando 31 de dezembro de 2021 às 12:30:15 PM e o imprimirá no formato "AAAA-MM-DD HH:MM:SS".
Trabalhando com Timedeltas
Além de trabalhar com datas e horas específicas, o módulo datetime também fornece a classe timedelta para trabalhar com durações de tempo. Um objeto timedelta representa uma duração de tempo e pode ser adicionado ou subtraído de um objeto datetime para produzir um novo objeto datetime. Por exemplo:
d1 = datetime.date(2021, 12, 31)
d2 = d1 + datetime.timedelta(days=1)
print(d2)
Isso criará um objeto timedelta representando um dia, adicionará ao objeto date d1 e produzirá um novo objeto date representando 1º de janeiro de 2022 e o imprimirá no formato "AAAA-MM-DD".
Formatando Datas e Horas
O módulo datetime fornece o método strftime(), que pode ser usado para formatar um objeto datetime como uma string. Este método recebe uma string de formato como argumento, que especifica o formato desejado da string de saída. Por exemplo, o código a seguir formata um objeto datetime como uma string no formato "AAAA-MM-DD HH:MM:SS":
dt = datetime.datetime(2021, 12, 31, 12, 30, 15)
s = dt.strftime('%Y-%m-%d %H:%M:%S')
print(s)
Ele imprimirá "2021-12-31 12:30:15"
Analisando Datas e Horas de Strings
O módulo datetime também fornece o método de classe strptime(), que pode ser usado para analisar uma string e criar um objeto datetime. Este método recebe dois argumentos: a string a ser analisada e uma string de formato que especifica o formato esperado da string de entrada. Por exemplo, o código a seguir analisa uma string no formato "AAAA-MM-DD HH:MM:SS" e cria um objeto datetime:
s = '2021-12-31 12:30:15'
dt = datetime.datetime.strptime(s, '%Y-%m-%d %H:%M:%S')
print(dt)
Ele imprimirá "2021-12-31 12:30:15"
A string de formato é uma string de caracteres que correspondem às diferentes partes de uma data e hora, como o ano, mês, dia, hora, minuto e segundo.
Aqui estão alguns dos caracteres mais comumente usados na string de formato:
%Y: ano com século como um número decimal. Por exemplo, "2022"%m: mês como um número decimal preenchido com zeros. Por exemplo, "01" para janeiro, "12" para dezembro%d: dia do mês como um número decimal preenchido com zeros. Por exemplo, "01" para o primeiro dia do mês, "31" para o último dia do mês%H: hora (relógio de 24 horas) como um número decimal preenchido com zeros. Por exemplo, "00" para meia-noite, "12" para meio-dia, "23" para 23h%M: minuto como um número decimal preenchido com zeros. Por exemplo, "00" para o início da hora, "30" para meia hora%S: segundo como um número decimal preenchido com zeros. Por exemplo, "00" para o início do minuto, "59" para o final do minuto
Além desses caracteres, a string de formato também pode incluir caracteres literais que serão correspondidos à string de entrada. Por exemplo, a seguinte string de formato corresponderá a uma data no formato "AAAA-MM-DD":
fmt = '%Y-%m-%d'
O método strptime() então usará esta string de formato para analisar a string de entrada e extrair o ano, mês e dia dela.
É importante notar que a string de formato deve corresponder à string de entrada exatamente, caso contrário, uma exceção será levantada. Se você não tiver certeza sobre o formato da string de entrada, você pode usar as instruções try e except para lidar com quaisquer exceções potenciais que possam ser levantadas.
Além disso, o método strptime() não é amplamente recomendado devido a alguns problemas, como não ser thread-safe e ser lento. É recomendado usar a função dateutil.parser.parse(), que é mais flexível e mais eficiente.
Trabalhando com Fusos Horários
O módulo datetime também fornece a biblioteca pytz que pode ser usada para trabalhar com fusos horários. Para usá-la, você precisará instalá-la primeiro executando pip install pytz na sua linha de comando.
Uma vez instalada, você pode usar a função pytz.timezone para criar um objeto de fuso horário para um fuso horário específico, por exemplo:
from datetime import datetime
import pytz
dt = datetime.now(pytz.timezone('US/Pacific'))
print(dt)
Isso criará um objeto datetime com a data e hora atuais no fuso horário do Pacífico (EUA) e o imprimirá no formato "AAAA-MM-DD HH:MM:SS-TZ".
Resumo
Neste laboratório, exploramos algumas das classes e funções mais comumente usadas do módulo datetime do Python e aprendemos como usá-las para realizar uma variedade de tarefas, como trabalhar com datas, horas e timedeltas. Vimos como criar objetos date, time e datetime usando os construtores apropriados e como combiná-los para representar pontos específicos no tempo. Também aprendemos sobre a classe timedelta, que pode ser usada para representar durações de tempo, e como usá-la para realizar operações aritméticas em objetos datetime.
Além dos exemplos fornecidos neste laboratório, o módulo datetime também fornece uma variedade de outras funções e classes para trabalhar com fusos horários, formatar datas e horas e analisar datas e horas de strings. É um módulo poderoso e versátil que pode ser usado para resolver uma ampla variedade de problemas relacionados ao tempo em Python.
Neste laboratório, exploramos alguns dos recursos avançados do módulo datetime do Python, incluindo conversão de formato de data e hora e conversão de fuso horário. Aprendemos como usar os métodos strftime() e strptime() para formatar e analisar datas e horas como strings e como usar a biblioteca pytz para trabalhar com fusos horários. Com essas ferramentas, você deve ser capaz de trabalhar efetivamente com datas e horas em Python e resolver uma ampla variedade de problemas relacionados ao tempo.



