Сравнение дат в datetime
Скажите, почему при сравнении дат в библиотеке datetime выводит неверный результат?
import datetime as dt
d = dt.datetime.now().strftime('%d.%m.%Y')
ddate = dt.date(3000, 7, 5)
dd = ddate.strftime('%d.%m.%Y')
print(d)
print(dd)
print(dd > d)
Разве 3000 год не больше, чем 2020 год?
Ответы (1 шт):
Автор решения: strawdog
→ Ссылка
Вы переводите формат datetime.datetime и datetime.date в строки (именно это делает метод strftime), и потом их сравниваете. Разумеется, строка 09.11.2020 больше строки 05.07.3000.
Сравнивать нужно непосредственно данные в форматах datetime:
dt.datetime.now() < dt.datetime(3000, 7, 5)
# True
UPDATE
Если вам изначально дана строка, то переведите ее в формат dateimte и сравнивайте:
import datetime as dt
my_string = "07.02.3000"
my_dt = dt.datetime.strptime(my_string, '%d.%m.%Y')
print(my_dt > dt.datetime.now())
# True