Как проверить, соответствует ли дата в тот же день, что и datetime.today()?
Это условие всегда оценивается как True
даже если оно происходит в один и тот же день, поскольку сравнивается время.
from datetime import datetime
# ...
if date_num_posts < datetime.today():
Как я могу проверить, совпадает ли дата с datetime.today()
?
Ответы
Ответ 1
Если вы хотите просто сравнить даты,
yourdatetime.date() < datetime.today().date()
Или, очевидно,
yourdatetime.date() == datetime.today().date()
Если вы хотите проверить, что у них одна и та же дата.
Обычно рекомендуется документация. Это также обычно первый результат google для python thing_i_have_a_question_about
. Если ваш вопрос не о функции/модуле с именем "змея".
В принципе, модуль datetime
имеет три типа для хранения момента времени:
-
date
за год, месяц, день месяца
-
time
часы, минуты, секунды, микросекунды, информация о часовом поясе
-
datetime
объединяет дату и время. Он имеет методы date()
и time()
для получения соответствующих объектов date
и time
, и есть удобная функция combine
для объединения date
и time
в datetime
.
Ответ 2
-
Если вам нужно сравнить значение только дня месяца, вы можете использовать следующий код:
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 имеет следующий формат:
datetime.timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])
Таким образом, вы можете проверить diff в днях, секундах, секундах, минутах и т.д. в зависимости от того, что вам действительно нужно:
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
Ответ 3
Вы можете установить часы, минуты, секунды и микросекунды на все, что вам нравится
datetime.datetime.today().replace(hour=0, minute=0, second=0, microsecond=0)
но ответ trutheality, вероятно, лучший, когда все они равны нулю, и вы можете просто сравнить .date()
времени
Возможно, это быстрее, если вам нужно сравнить сотни дат, потому что вам нужно сделать только replace()
один раз против сотен вызовов date()
Ответ 4
all(getattr(someTime,x)==getattr(today(),x) for x in ['year','month','day'])
Следует сравнить с помощью .date()
, но я оставляю этот метод в качестве примера, если вы хотите, например, сравнивать вещи по месяцам или минутам и т.д.