2012-11-05 12 views
7

Mam 2 obiekty datetime. Jeden ma tylko datę, a drugi ma datę: &. Chcę porównać tylko daty (a nie czas). To jest to, co mam:Jak porównać tylko daty (i nie czas) w pythonie

d2=datetime.date(d1.year,d1.month,d1.day) 
print d2 == d1.date 

To drukuje fałszywe. Każdy pomysł, dlaczego?

Dziękujemy!

Odpowiedz

16
d1.date() == d2.date() 

Z Python doc:

data

datetime.date() Return obiekt z tego samego roku, miesiąca i dnia.

+0

Dziękuję. Skończyło się na zrobieniu 'd1 == d2.date()' i działało. ponieważ d1 jest datą, więc nie mogę zrobić d1.date(), jak zasugerowałeś. W każdym razie dzięki! –

3

Oddaj swój obiekt w obiekt datetime data pierwszego. Gdy będą tego samego typu, porównanie będzie miało sens.

if d2.date() == d1.date(): 
    print "same date" 
else: 
    print "different date" 

Twoim przypadku powyżej: -

In [29]: d2 
Out[29]: datetime.date(2012, 1, 19) 

In [30]: d1 
Out[30]: datetime.datetime(2012, 1, 19, 0, 0) 

Więc

In [31]: print d2 == d1.date() 
True 

Wszystko co potrzebne w Twoim przypadku było upewnić się, że wykonanie metody bieżąco z nawiasami ().