Manipulação de Datas em Python

Manipulação de Datas em Python

Este artigo explica a manipulação de datas em Python.

YouTube Video

Manipulação de Datas em Python

A manipulação de datas em Python utiliza principalmente o módulo datetime. Este módulo oferece diversas classes e funções para manipular datas e horários.

Abaixo estão alguns exemplos de manipulação básica de datas usando o módulo datetime.

Obtendo Data e Hora

Você pode obter a data e hora atual da seguinte forma. datetime.now() e datetime.today() retornam quase o mesmo resultado, mas pode haver diferenças em como eles lidam com fusos horários.

1from datetime import datetime
2
3# Get the current date and time
4now = datetime.now()
5print(f"Current date and time: {now}")
6
7# Get today's date only
8today = datetime.today()
9print(f"Today's date: {today.date()}")
  • Este código obtém e exibe a data e hora atual, assim como somente a data de hoje.

Criando Datas e Horários Específicos

Você pode criar uma data e hora específica da seguinte maneira.

1from datetime import datetime
2
3# Create a specific date and time
4specific_date = datetime(2023, 11, 7, 10, 30, 45)
5print(f"Specified date and time: {specific_date}")
  • Este código cria e exibe a data e hora especificada (7 de novembro de 2023, 10:30:45).

Formatando Datas

A formatação de datas pode ser feita da seguinte maneira.

1from datetime import datetime
2
3now = datetime.now()
4
5# Format the date
6formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
7print(f"Formatted date and time: {formatted_date}")
  • Este código obtém a data e hora atual, formata para o formato especificado usando strftime e exibe.

Strings de formatação de data

  • %Y: Ano (4 dígitos)
  • %m: Mês (01 a 12)
  • %d: Dia (01 a 31)
  • %H: Hora (00 a 23)
  • %M: Minuto (00 a 59)
  • %S: Segundo (00 a 59)

Análise de strings de data

Você pode converter uma string que representa uma data em um objeto datetime.

1from datetime import datetime
2
3date_string = "2023-11-07 10:30:45"
4parsed_date = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")
5print(f"Parsed date and time: {parsed_date}")
  • Este código converte uma data representada como string em um objeto datetime usando strptime() e exibe.

Cálculos com Datas

Operações com datas podem ser realizadas da seguinte forma.

 1from datetime import datetime, timedelta
 2
 3now = datetime.now()
 4
 5# Date for one day later
 6tomorrow = now + timedelta(days=1)
 7print(f"Date for one day later: {tomorrow}")
 8
 9# Date for one week ago
10last_week = now - timedelta(weeks=1)
11print(f"Date for one week ago: {last_week}")
12
13# Time for two hours later
14in_two_hours = now + timedelta(hours=2)
15print(f"Time for two hours later: {in_two_hours}")
  • Este código utiliza timedelta para adicionar ou subtrair dias e horas da data e hora atual, calculando e exibindo a data e hora para amanhã, uma semana atrás e duas horas depois.

Manipulação de fusos horários

Você também pode lidar com fusos horários usando o módulo datetime.

 1from datetime import datetime, timezone, timedelta
 2
 3# Current UTC time
 4utc_now = datetime.now(timezone.utc)
 5print(f"Current UTC time: {utc_now}")
 6
 7# JST (UTC+9)
 8jst = timezone(timedelta(hours=9))
 9jst_now = datetime.now(jst)
10print(f"Current JST time: {jst_now}")
  • datetime retorna um 'datetime ingênuo' (sem informação de fuso horário) por padrão. Você pode manipular fusos horários explicitamente usando a classe timezone ou zoneinfo.

A classe date e a classe time

Com o módulo datetime, você também pode manipular apenas datas ou apenas horários.

1from datetime import date, time
2
3d = date(2023, 11, 7)
4t = time(10, 30, 45)
5
6print(f"Date only: {d}")
7print(f"Time only: {t}")
  • A classe date lida apenas com datas, e a classe time lida apenas com horários.

Conversão entre datetime e timestamp

É possível a conversão entre timestamps UNIX e objetos datetime. Aqui, um timestamp UNIX refere-se ao número de segundos decorridos desde 1º de janeiro de 1970.

 1from datetime import datetime
 2
 3now = datetime.now()
 4
 5# datetime → timestamp
 6timestamp = now.timestamp()
 7print(f"Timestamp: {timestamp}")
 8
 9# timestamp → datetime
10restored = datetime.fromtimestamp(timestamp)
11print(f"Restored datetime: {restored}")
  • Este código converte a data e hora atual para um timestamp UNIX, e então usa a função fromtimestamp() para converter esse timestamp de volta para um objeto datetime.

Erros comuns

Ao usar o módulo datetime, você deve estar atento aos seguintes pontos.

  • datetime.now() não considera fusos horários, então para internacionalização, é necessário usar explicitamente timezone.utc.
  • Tenha cuidado para não confundir %m (mês) e %M (minuto) em strings de formatação.

Resumo

O módulo datetime também oferece muitos outros recursos para manipulação flexível de datas e horários. Além disso, classes como date, time e timedelta estão disponíveis e são especializadas para operações específicas.

O uso de outras bibliotecas também permite uma manipulação mais avançada de datas. Por exemplo, o pandas é especializado em lidar com dados de séries temporais, enquanto o dateutil é adequado para análises complexas de datas. Além disso, a biblioteca arrow também é útil.

Você pode acompanhar o artigo acima usando o Visual Studio Code em nosso canal do YouTube. Por favor, confira também o canal do YouTube.

YouTube Video