Si vous souhaitez simplement comparer les dates,
yourdatetime.date() < datetime.today().date()
Ou, évidemment,
yourdatetime.date() == datetime.today().date()
Si vous voulez vérifier qu'il s'agit de la même date.
La documentation est généralement utile. C'est aussi généralement le premier résultat Google pour python thing_i_have_a_question_about
. Sauf si votre question concerne une fonction / un module nommé "snake".
Fondamentalement, le datetime
module a trois types pour stocker un point dans le temps:
date
pour l'année, le mois, le jour du mois
time
pour heures, minutes, secondes, microsecondes, informations sur le fuseau horaire
datetime
combine la date et l'heure. Il a les méthodes date()
et time()
pour obtenir les objets date
et correspondants time
, et il y a une combine
fonction pratique pour combiner date
et time
dans un fichier datetime
.
Si vous devez comparer uniquement la valeur du jour du mois, vous pouvez utiliser le code suivant:
if yourdate.day == datetime.today().day: # do something
Si vous avez besoin de vérifier que la différence entre deux dates est acceptable, vous pouvez utiliser timedelta :
if (datetime.today() - yourdate).days == 0: #do something
Et si vous souhaitez comparer uniquement une partie de la date, vous pouvez simplement utiliser:
from datetime import datetime, date if yourdatetime.date() < datetime.today().date() # do something
Notez que timedelta a le format suivant:
Ainsi, vous pouvez vérifier les différences en jours, secondes, msec, minutes, etc. en fonction de ce dont vous avez vraiment besoin:
from datetime import datetime if (datetime.today() - yourdate).days == 0: #do something
Dans votre cas, lorsque vous devez vérifier que deux dates sont exactement les mêmes, vous pouvez utiliser timedelta (0):
from datetime import datetime, timedelta if (datetime.today() - yourdate) == timedelta(0): #do something
la source
.day
est le jour du mois. Le 12 août est donc "égal" au 12 décembre en utilisant votre premier extrait de code. Ce n'est probablement pas le comportement souhaité par le PO.Vous pouvez régler les heures, les minutes, les secondes et les microsecondes comme vous le souhaitez
datetime.datetime.today().replace(hour=0, minute=0, second=0, microsecond=0)
mais la réponse de la vérité est probablement meilleure quand elles doivent toutes être nulles et que vous pouvez simplement comparer les
.date()
s de l'époquePeut-être que c'est plus rapide si vous devez comparer des centaines de datetimes car vous n'avez besoin de faire
replace()
qu'une fois par rapport à des centaines d'appels àdate()
la source
all(getattr(someTime,x)==getattr(today(),x) for x in ['year','month','day'])
Il faut comparer l'utilisation
.date()
, mais je laisse cette méthode à titre d'exemple au cas où l'on voudrait, par exemple, comparer les choses par mois ou par minute, etc.la source