Data e hora Python

Resumo : neste tutorial, você aprenderá como usar o datetimemódulo Python para manipular datas e horas.

Introdução ao módulo datetime do Python

O datetimeé um módulo integrado que fornece classes para manipulação de datas e horas.

Para manipular datas, você usa a dateclasse. Por exemplo, o exemplo a seguir cria um novo objeto de data com ano, mês e dia:

from datetime import date

d = date(1999, 12, 31)
print(d)
print(type(d))Linguagem de código:  Python  ( python )

Saída:

1999-12-31
<class 'datetime.date'>Linguagem de código:  Python  ( python )

Como funciona.

Primeiro, importe a dateclasse do datetimemódulo:

from datetime import dateLinguagem de código:  Python  ( python )

Segundo, crie um novo objeto de data com três números inteiros ano, mês e dia:

d = date(1999, 12, 31)Linguagem de código:  Python  ( python )

Observe que se você usar números inteiros que não sejam válidos para anos, meses e dias, você receberá uma ValueErrorexceção.

Terceiro, exiba o objeto de data e seu tipo:

1999-12-31
<class 'datetime.date'>Linguagem de código:  Python  ( python )

Obtendo o ano, mês e dia de um objeto de data

Um dateobjeto tem algumas propriedades úteis, como year, daye month:

from datetime import date

d = date(1999, 12, 31)
print(d.year, d.month, d.day)Linguagem de código:  Python  ( python )

Saída:

1999 12 31Linguagem de código:  Python  ( python )

Obtendo a data atual

Para obter a data atual, você usa o today()método de classe:

from datetime import date

d = date.today()
print(d)Linguagem de código:  Python  ( python )

Obtendo o dia da semana

O weekday()retorna o dia da semana em que segunda-feira é zero, terça-feira é um e assim por diante. Também isoweekday()retorna o dia da semana, mas segunda-feira é um, terça-feira é dois e assim por diante. Por exemplo:

from datetime import date

d = date(1999, 12, 31)

print(d.weekday())
print(d.isoweekday())Linguagem de código:  Python  ( python )

Para obter o nome do dia com base em um dia da semana, você pode usar a day_name()função do calendarmódulo. Por exemplo:

import calendar
from datetime import date

d = date(1999, 12, 27)

print(calendar.day_name[d.weekday()])  # Monday

print(d.weekday())  # 0
print(d.isoweekday())  # 1Linguagem de código:  Python  ( python )

delta do tempo

Para representar a diferença entre duas datas, você usa a timedeltaclasse. O seguinte cria um novo timedeltaobjeto:

from datetime import timedelta

delta = timedelta(days=7)
print(delta)Linguagem de código:  Python  ( python )

Saída:

7 days, 0:00:00Linguagem de código:  CSS  ( css )

Depois de ter um timedeltaobjeto, você pode adicioná-lo/subtraí-lo de/para um objeto de data. Por exemplo, o seguinte usa um timedelta para adicionar 7 dias a uma data de hoje:

from datetime import timedelta, date


delta = timedelta(days=7)
next_week = date.today() + delta
print(next_week)Linguagem de código:  Python  ( python )

Adicionando/subtraindo duas datas

Ao adicionar ou subtrair duas datas, você obterá um timedeltaobjeto. Por exemplo, o seguinte mostra o número de dias até o ano novo:

from datetime import date

next_year = date.today().year + 1
new_year = date(next_year, 1, 1)
day_to_new_year = new_year - date.today()

print(type(day_to_new_year))
print(day_to_new_year)Linguagem de código:  Python  ( python )

Como funciona.

Primeiro, obtenha o ano novo adicionando um ao ano atual a partir da data de hoje:

next_year = date.today().year + 1Linguagem de código:  Python  ( python )

Segundo, crie um novo dateobjeto com a data do novo ano:

new_year = date(next_year, 1, 1)Linguagem de código:  Python  ( python )

Terceiro, subtraia a data de hoje do ano novo:

day_to_new_year = new_year - date.today()Linguagem de código:  Python  ( python )

Por fim, mostre a saída:

print(type(day_to_new_year))
print(day_to_new_year)Linguagem de código:  Python  ( python )

Saída:

<class 'datetime.timedelta'>
93 days, 0:00:00Linguagem de código:  Python  ( python )

Observe que o número de dias em que você executa o programa provavelmente é diferente.

Para obter o número de dias apenas de um timedelta, você usa a dayspropriedade:

from datetime import date

next_year = date.today().year + 1
new_year = date(next_year, 1, 1)
day_to_new_year = new_year - date.today()

print(day_to_new_year.days)Linguagem de código:  Python  ( python )

Saída:

93Linguagem de código:  Python  ( python )

Tempo

Para representar tempos, você usa a timeclasse do datetimemódulo. Por exemplo, o seguinte cria um novo objeto de tempo com hora, minuto, segundo e microssegundo:

from datetime import time


t = time(9, 30, 45, 500)
print(t)Linguagem de código:  Python  ( python )

Saída:

09:30:45.000500Linguagem de código:  Python  ( python )

Assim como um dateobjeto, o timeobjeto possui as propriedades de hora, minuto, segundo e microssegundo:

from datetime import time


t = time(9, 30, 45, 500)
print(t.hour, t.minute, t.second, t.microsecond)Linguagem de código:  Python  ( python )

Saída:

9 30 45 500Linguagem de código:  Python  ( python )

data hora

A datetimeclasse representa datas e horas. O seguinte cria um novo datetimeobjeto com ano, mês, dia, hora, minuto, segundo e microssegundo:

from datetime import datetime


dt = datetime(1999, 12, 31, 9, 30, 45, 500)
print(dt.date())Linguagem de código:  Python  ( python )

Saída:

1999-12-31 09:30:45.000500Linguagem de código:  Python  ( python )

Para obter a hora atual, você usa o now()método do datetime()objeto:

from datetime import datetime, timedelta


current_time = datetime.now()
print(current_time)Linguagem de código:  Python  ( python )

Para obter um objeto de data do datetimeobjeto, você usa o date()método:

from datetime import datetime


dt = datetime(1999, 12, 31, 9, 30, 45, 500)
print(dt.date())Linguagem de código:  Python  ( python )

Saída:

1999-12-31Linguagem de código:  Python  ( python )

Da mesma forma, o time()método retorna o objeto de tempo do datetimeobjeto:

from datetime import datetime


dt = datetime(1999, 12, 31, 9, 30, 45, 500)
print(dt.time())Linguagem de código:  Python  ( python )

Saída:

09:30:45.000500Linguagem de código:  Python  ( python )

Assim como os objetos de data e hora, você pode adicionar/subtrair um objeto timedeltade/para um objeto de data e hora. Por exemplo:

from datetime import datetime


current_time = datetime.now()
print(current_time)Linguagem de código:  Python  ( python )

Saída:

2000-01-01 14:30:45.000500Linguagem de código:  Python  ( python )

Neste exemplo, adicionamos 1 dia e 5 horas a um objeto datetime.

Para obter a corrente UTC, você usa o utcnow()método:

from datetime import datetime


current_time = datetime.utcnow()
print(current_time)Linguagem de código:  Python  ( python )

Formatando datas e horas

Os objetos data, hora e datahora possuem o strftime()método que formata data, hora e datahora. Aceita um argumento (formato):

strftime(format)Linguagem de código:  Python  ( python )

O formatargumento contém diretivas para formatação de datas e horas. A tabela a seguir mostra as diretivas de formato:

Diretiva Significado Exemplo
%a Um nome abreviado para o dia da semana Seg, Ter
%A Um nome completo para o dia da semana Segunda-feira terça-feira, …
%w Um dia da semana (0 é domingo e 6 é sábado) 0, 1,…, 6
%d Um dia do mês preenchido com zeros 01, 02,…, 31
%b Um nome de mês abreviado Janeiro, fevereiro,…
%B Um nome de mês completo Janeiro fevereiro…
%m Um mês preenchido com zeros 01, 02,…, 12
%y Um ano preenchido com zeros sem século 00, 01,…, 99
%Y Um ano preenchido com zeros com século 0001, 1999,…
%H Uma hora preenchida com zeros em um relógio de 24 horas 00, 01,…, 23
%I Uma hora preenchida com zeros em um relógio de 12 horas 01, 02,…, 12
%p AM ou PM MANHÃ TARDE
%M um minuto preenchido com zeros 00, 01,…, 59
%S um segundo preenchido com zeros 00, 01,…, 59
%f um preenchimento de zeros com 6 dígitos de microssegundos 000000, 000001,…, 999999
%z Deslocamento UTC no formulário±HHMM[SS[.ffffff]] -0400, +1030,…
%Z Nome do fuso horário UTC, GMT, ”
%j O dia do ano com zeros 001, 002,…, 366
%U Número da semana do ano 00, 01,…, 53
%W Número da semana do ano 00, 01,…, 53
%c representação de data e hora. Sexta-feira, 31 de dezembro 09:30:45 1999
%x Sequência de data 31/12/99
%X Sequência de tempo 09:30:45
%% O personagem literal '%'. %

Por exemplo, o seguinte mostra como usar o strftime()método para formatar uma data e hora:

from datetime import datetime


dt = datetime(1999, 12, 31, 9, 30, 45)
s = dt.strftime('%B %m, %Y %I:%M %p')
print(s)Linguagem de código:  Python  ( python )

Saída:

December 12, 1999 09:30 AMLinguagem de código:  Python  ( python )

Converter uma string em data e hora

O strptime()é um método de classe da datetimeclasse, que analisa uma string com um determinado formato para um datetimeobjeto:

strptime(date_string, format)

Por exemplo:

from datetime import datetime


dt = datetime.strptime('August 13, 2022', '%B %d, %Y')
print(dt)
Linguagem de código:  JavaScript  ( javascript )

Saída:

2022-08-13 00:00:00Linguagem de código:  CSS  ( css )

Resumo

  • Use a dateclasse para representar datas.
  • Use a timeclasse para representar tempos.
  • Use a datetimeclasse para representar datas e horas.
  • Use a timedeltaclasse para representar um delta de tempo.
  • Use o strftime()método para formatar a date, a timeou um datetimeobjeto.
  • Use o strptime()método para analisar uma string em um datetimeobjeto.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *