如何检查日期是否与datetime.today()相同?

时间:2011-06-20 06:01:26

标签: python

这个条件总是评估为True,即使它是同一天,因为它正在比较时间。

from datetime import datetime

# ...

if date_num_posts < datetime.today(): 

如何查看日期是否与datetime.today()同日?

5 个答案:

答案 0 :(得分:132)

如果您只想比较日期,

yourdatetime.date() < datetime.today().date()

或者,显然,

yourdatetime.date() == datetime.today().date()

如果您想检查他们相同的日期。

The documentation通常很有帮助。它通常也是python thing_i_have_a_question_about的第一个google结果。除非您的问题是关于名为“snake”的函数/模块。

基本上,datetime模块有三种类型用于存储时间点:

  • date年,月,日。
  • time小时,分钟,秒,微秒,时区信息
  • datetime结合了日期和时间。它有方法date()time()来获取相应的datetime个对象,并且有一个方便的combine函数来组合datetimedatetime

答案 1 :(得分:31)

  • 如果您只需要比较月中的值,则可以使用以下代码:

    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

答案 2 :(得分:3)

您可以将小时,分钟,秒和微秒设置为您喜欢的任何内容

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

但当他们全部为零时,他们的答案可能是最好的,你可以只比较.date()次的时间

如果您需要比较数百个日期时间,可能会更快,因为您只需要执行replace()一次与数百次调用date()

答案 3 :(得分:2)

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

应该使用.date()进行比较,但我将此方法作为示例,以防万一,例如,按月或按分钟比较等等。

答案 4 :(得分:1)

另一种方法是转换字符串中的日期并进行比较。

from datetime import datetime

today= datetime.today()

if today.strftime('%Y-%m-%d') == other_datetime.strftime('%Y-%m-%d'):
    print("same day as today: {0}".format(today.strftime('%Y-%m-%d')))