Resumo : neste tutorial, você aprenderá como usar o datetime
mó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 date
classe. 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 date
classe do datetime
módulo:
from datetime import date
Linguagem 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 ValueError
exceçã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 date
objeto tem algumas propriedades úteis, como year
, day
e 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 31
Linguagem 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 calendar
mó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()) # 1
Linguagem de código: Python ( python )
delta do tempo
Para representar a diferença entre duas datas, você usa a timedelta
classe. O seguinte cria um novo timedelta
objeto:
from datetime import timedelta
delta = timedelta(days=7)
print(delta)
Linguagem de código: Python ( python )
Saída:
7 days, 0:00:00
Linguagem de código: CSS ( css )
Depois de ter um timedelta
objeto, 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 timedelta
objeto. 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 + 1
Linguagem de código: Python ( python )
Segundo, crie um novo date
objeto 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:00
Linguagem 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 days
propriedade:
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:
93
Linguagem de código: Python ( python )
Tempo
Para representar tempos, você usa a time
classe do datetime
mó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.000500
Linguagem de código: Python ( python )
Assim como um date
objeto, o time
objeto 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 500
Linguagem de código: Python ( python )
data hora
A datetime
classe representa datas e horas. O seguinte cria um novo datetime
objeto 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.000500
Linguagem 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 datetime
objeto, 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-31
Linguagem de código: Python ( python )
Da mesma forma, o time()
método retorna o objeto de tempo do datetime
objeto:
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.000500
Linguagem de código: Python ( python )
Assim como os objetos de data e hora, você pode adicionar/subtrair um objeto timedelta
de/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.000500
Linguagem 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 format
argumento 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 AM
Linguagem de código: Python ( python )
Converter uma string em data e hora
O strptime()
é um método de classe da datetime
classe, que analisa uma string com um determinado formato para um datetime
objeto:
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:00
Linguagem de código: CSS ( css )
Resumo
- Use a
date
classe para representar datas. - Use a
time
classe para representar tempos. - Use a
datetime
classe para representar datas e horas. - Use a
timedelta
classe para representar um delta de tempo. - Use o
strftime()
método para formatar adate
, atime
ou umdatetime
objeto. - Use o
strptime()
método para analisar uma string em umdatetime
objeto.