Если вы хотите просто сравнить даты,
yourdatetime.date() < datetime.today().date()
Или, очевидно,
yourdatetime.date() == datetime.today().date()
Если хотите проверить, совпадают ли даты.
Документация обычно бывает полезной. Также обычно это первый результат Google для python thing_i_have_a_question_about
. Если ваш вопрос не касается функции / модуля с именем "snake".
По сути, datetime
модуль имеет три типа для хранения момента времени:
date
на год, месяц, день месяца
time
для часов, минут, секунд, микросекунд, информации о часовом поясе
datetime
совмещает дату и время. Он имеет методы date()
и time()
получить соответствующие date
и time
объекты, и есть удобная combine
функция , чтобы объединить date
и time
в datetime
.
Если вам нужно сравнить только значение дня месяца, вы можете использовать следующий код:
if yourdate.day == datetime.today().day: # do something
Если вам нужно проверить, что разница между двумя датами приемлема, вы можете использовать timedelta :
if (datetime.today() - yourdate).days == 0: #do something
И если вы хотите сравнить только часть даты, вы можете просто использовать:
from datetime import datetime, date if yourdatetime.date() < datetime.today().date() # do something
Обратите внимание, что timedelta имеет следующий формат:
Таким образом, вы можете проверять разницу в днях, секундах, миллисекундах, минутах и так далее, в зависимости от того, что вам действительно нужно:
from datetime import datetime if (datetime.today() - yourdate).days == 0: #do something
В вашем случае, когда вам нужно проверить, что две даты точно такие же, вы можете использовать timedelta (0):
from datetime import datetime, timedelta if (datetime.today() - yourdate) == timedelta(0): #do something
источник
.day
это день месяца. Таким образом, 12 августа "равно" 12 декабря при использовании вашего первого фрагмента кода. Вероятно, это не то поведение, которого хочет ОП.Вы можете установить часы, минуты, секунды и микросекунды по своему усмотрению
datetime.datetime.today().replace(hour=0, minute=0, second=0, microsecond=0)
но ответ правдивости, вероятно, лучше всего, когда все они равны нулю, и вы можете просто сравнить
.date()
временаВозможно, это будет быстрее, если вам нужно сравнить сотни дат, потому что вам нужно сделать только
replace()
один раз против сотен вызововdate()
источник
all(getattr(someTime,x)==getattr(today(),x) for x in ['year','month','day'])
Следует сравнивать использование
.date()
, но я оставляю этот метод в качестве примера на тот случай, если кто-то захочет, например, сравнить вещи по месяцам или минутам и т. Д.источник