Se você quiser apenas comparar datas,
yourdatetime.date() < datetime.today().date()
Ou, obviamente,
yourdatetime.date() == datetime.today().date()
Se você quiser verificar se eles são da mesma data.
A documentação geralmente é útil. Também é geralmente o primeiro resultado do Google para python thing_i_have_a_question_about
. A menos que sua pergunta seja sobre uma função / módulo chamado "cobra".
Basicamente, o datetime
módulo possui três tipos de armazenamento de um ponto no tempo:
date
por ano, mês, dia do mês
time
por horas, minutos, segundos, microssegundos, informações de fuso horário
datetime
combina data e hora. Ele tem os métodos date()
e time()
para obter os objetos date
e correspondentes time
, e há uma combine
função útil para combinar date
e time
em um datetime
.
Se você precisar comparar apenas o valor do dia do mês, poderá usar o seguinte código:
if yourdate.day == datetime.today().day: # do something
Se você precisar verificar se a diferença entre duas datas é aceitável, você pode usar timedelta :
if (datetime.today() - yourdate).days == 0: #do something
E se você quiser comparar apenas parte da data, você pode simplesmente usar:
from datetime import datetime, date if yourdatetime.date() < datetime.today().date() # do something
Observe que timedelta tem o seguinte formato:
Assim, você pode verificar a diferença em dias, segundos, mseg, minutos e assim por diante, dependendo do que você realmente precisa:
from datetime import datetime if (datetime.today() - yourdate).days == 0: #do something
No seu caso, quando você precisar verificar se duas datas são exatamente iguais, você pode usar timedelta (0):
from datetime import datetime, timedelta if (datetime.today() - yourdate) == timedelta(0): #do something
fonte
.day
é o dia do mês. Portanto, 12 de agosto é "igual" a 12 de dezembro usando seu primeiro trecho de código. Provavelmente, esse não é o comportamento que o OP deseja.Você pode definir as horas, minutos, segundos e microssegundos para o que quiser
datetime.datetime.today().replace(hour=0, minute=0, second=0, microsecond=0)
mas a resposta da verdade é provavelmente melhor quando todas devem ser zero e você pode apenas comparar
.date()
os temposTalvez seja mais rápido se você tiver que comparar centenas de datas, porque você só precisa fazer
replace()
uma vez contra centenas de chamadas paradate()
fonte
all(getattr(someTime,x)==getattr(today(),x) for x in ['year','month','day'])
Deve-se comparar usando
.date()
, mas deixo este método como exemplo caso se queira, por exemplo, comparar coisas por mês ou por minuto, etc.fonte