Jak porównać dwie daty, aby zobaczyć, która jest później, używając Pythona?
Na przykład chcę sprawdzić, czy bieżąca data przekroczyła ostatnią datę na liście, którą tworzę, z datami świąt, aby automatycznie wysłał wiadomość e-mail, informując administratora, aby zaktualizował plik holiday.txt.
<
i>
, tak jak w każdym innym porównaniu.int compare_dates(void const *, void const*)
, rzucasz oba argumentystruct Date *
i implementujesz logikę porównania. Dla początkującego Pythona może to nie być tak oczywiste.Odpowiedzi:
Użyj
datetime
metody oraz operatora<
i jego krewnych.źródło
past
ipresent
? Nie rozumiem twojego przykładu, a jego wynik nie ma sensu.past
ipast_but_a_little_after
. Techniczniepresent
jest to także przeszłość, gdypast < present
dokonywane jest porównanie .Posługiwać się
time
Powiedzmy, że masz początkowe daty jako ciągi takie jak te:
date1 = "31/12/2015"
date2 = "01/01/2016"
Możesz wykonać następujące czynności:
newdate1 = time.strptime(date1, "%d/%m/%Y")
inewdate2 = time.strptime(date2, "%d/%m/%Y")
przekonwertować je na format daty Pythona. Porównanie jest więc oczywiste:newdate1 > newdate2
wróciFalse
newdate1 < newdate2
, wróciTrue
źródło
datetime.date(2011, 1, 1) < datetime.date(2011, 1, 2)
wróciTrue
.datetime.date(2011, 1, 1) - datetime.date(2011, 1, 2)
wrócidatetime.timedelta(-1)
.datetime.date(2011, 1, 1) + datetime.date(2011, 1, 2)
wrócidatetime.timedelta(1)
.zobacz dokumenty .
źródło
Inne odpowiedzi
datetime
i porównania działają również tylko dla czasu, bez daty.Na przykład, aby sprawdzić, czy teraz jest mniej więcej 8:00, możemy użyć:
A później porównaj z:
który wróci
True
źródło
Aby obliczyć różnicę dni w dwóch datach, można wykonać jak poniżej:
Ponieważ jeśli sekunda jest dłuższa od terminu płatności, musimy naliczyć opłatę
źródło