这个条件总是评估为True
,即使它是同一天,因为它正在比较时间。
from datetime import datetime
# ...
if date_num_posts < datetime.today():
如何查看日期是否与datetime.today()
同日?
答案 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()
来获取相应的date
和time
个对象,并且有一个方便的combine
函数来组合date
和time
成datetime
。答案 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')))