如何检查date是否与datetime.today()同一天?

if date_num_posts < datetime.datetime.today(): 

即使是同一天,也是如此,因为它是比较时间。

如何检查date是否与datetime.today()同一天?

如果你只想比较date,

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

或者显然,

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

如果你想检查他们是同一date。

文档通常是有帮助的。 它通常也是python thing_i_have_a_question_about的第一个google结果。 除非你的问题是关于一个名为“蛇”的函数/模块。

基本上, datetime模块有三种types来存储时间点:

  • date为年,月,日
  • time为几小时,几分钟,几秒,几微秒,时区信息
  • datetime时间结合date和时间。 它具有方法date()time()来获取相应的datetime对象,还有一个方便的combinefunction来将datetime组合成一个datetime time
  • 如果您只需要比较一个月份的date值,则可以使用以下代码:

     if yourdate.day == datetime.today().day: # do something 
  • 如果您需要检查两个date之间的差异是否可以接受,那么您可以使用timedelta :

     if (datetime.today() - yourdate).days == 0: #do something 
  • 如果你只想比较date部分,你可以简单地使用:

     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 

在你的情况下,当你需要检查两个date是完全一样的,你可以使用timedelta(0):

 from datetime import datetime, timedelta if (datetime.today() - yourdate) == timedelta(0): #do something 
 all(getattr(someTime,x)==getattr(today(),x) for x in ['year','month','day']) 

我们应该使用.date()来进行比较,但是我想把这个方法作为一个例子,例如,按照月份或者按分钟来比较等等。

你可以设置小时,分钟,秒和微秒为任何你喜欢的

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

但是当它们都是零时,真实性的答案可能是最好的,你可以比较时间的.date()

也许这是更快,但如果你必须比较数百个date时间,因为你只需要执行replace()一次,而对数百个date()