Как я могу проверить, является ли дата тем же днем, что и дата-время.сегодня()?


if date_num_posts < datetime.datetime.today(): 

всегда верно, даже если это один и тот же день, потому что он сравнивает время.

Как я могу проверить, если дата совпадает с датой и временем.сегодня()?

4 53

4 ответа:

если вы хотите просто сравнить даты,

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.
  • Если вам нужно сравнить только значение дня месяца, чем вы можете использовать следующий код:

    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]]]]]]])

таким образом, вы можете проверить разницу в днях, секундах, МС, минутах и так далее в зависимости от того, что вам действительно нужно:

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

вы можете установить часы, минуты, секунды и микросекунды, чтобы все, что вам нравится

datetime.datetime.today().replace(hour=0, minute=0, second=0, microsecond=0)

но ответ trutheality, вероятно, лучше всего, когда все они равны нулю, и вы можете просто сравнить .date()s времен

может быть, это быстрее, хотя, если вам нужно сравнить сотни раз даты, потому что вам нужно только сделать replace() один раз против сотен звонков в date()

all(getattr(someTime,x)==getattr(today(),x) for x in ['year','month','day'])

следует сравнить с помощью .date(), но я оставляю этот метод в качестве примера, если вы хотите, например, сравнить вещи по месяцам или по минутам и т. д.