Jeśli chcesz tylko porównać daty,
yourdatetime.date() < datetime.today().date()
Lub oczywiście
yourdatetime.date() == datetime.today().date()
Jeśli chcesz sprawdzić, czy to ta sama data.
Dokumentacja jest zwykle pomocna. Jest to również zwykle pierwszy wynik Google dla zapytania python thing_i_have_a_question_about
. Chyba że twoje pytanie dotyczy funkcji / modułu o nazwie „wąż”.
Zasadniczo datetime
moduł ma trzy typy przechowywania punktu w czasie:
date
dla roku, miesiąca, dnia miesiąca
time
godziny, minuty, sekundy, mikrosekundy, informacje o strefie czasowej
datetime
łączy datę i godzinę. Ma metod date()
i time()
uzyskać odpowiednie date
i time
obiektów, a tam poręczna combine
funkcja łączenia date
i time
do datetime
.
Jeśli chcesz porównać tylko wartość dnia miesiąca, możesz użyć następującego kodu:
if yourdate.day == datetime.today().day: # do something
Jeśli chcesz sprawdzić, czy różnica między dwiema datami jest akceptowalna, możesz użyć timedelta :
if (datetime.today() - yourdate).days == 0: #do something
A jeśli chcesz porównać tylko część daty, możesz po prostu użyć:
from datetime import datetime, date if yourdatetime.date() < datetime.today().date() # do something
Zauważ, że timedelta ma następujący format:
Możesz więc sprawdzić różnicę w dniach, sekundach, ms, minutach itd., W zależności od tego, czego naprawdę potrzebujesz:
from datetime import datetime if (datetime.today() - yourdate).days == 0: #do something
W twoim przypadku, gdy chcesz sprawdzić, czy dwie daty są dokładnie takie same, możesz użyć timedelta (0):
from datetime import datetime, timedelta if (datetime.today() - yourdate) == timedelta(0): #do something
źródło
.day
to dzień miesiąca. Tak więc 12 sierpnia równa się 12 grudnia przy użyciu pierwszego fragmentu kodu. Prawdopodobnie nie jest to zachowanie, którego chce OP.Możesz ustawić godziny, minuty, sekundy i mikrosekundy według własnego uznania
datetime.datetime.today().replace(hour=0, minute=0, second=0, microsecond=0)
ale odpowiedź prawdy jest prawdopodobnie najlepsza, gdy wszystkie są równe zero i możesz po prostu porównać
.date()
s czasówMoże jest to jednak szybsze, jeśli musisz porównać setki dat, ponieważ wystarczy wykonać tylko
replace()
raz w porównaniu z setkami połączeńdate()
źródło
all(getattr(someTime,x)==getattr(today(),x) for x in ['year','month','day'])
Należy porównać użycie
.date()
, ale zostawiam tę metodę jako przykład na wypadek, gdyby ktoś chciał np. Porównać rzeczy według miesiąca lub minuty itp.źródło