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

这个条件总是计算为 True,即使它是同一天,因为它是比较时间。

from datetime import datetime


# ...


if date_num_posts < datetime.today():

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

181155 次浏览
  • 如果你只需要比较月份中的某一天的价值,你可以使用以下代码:

    if yourdate.day == datetime.today().day:
    # do something
    
  • If you need to check that the difference between two dates is acceptable then you can use timedelta:

    if (datetime.today() - yourdate).days == 0:
    #do something
    
  • And if you want to compare date part only than you can simply use:

    from datetime import datetime, date
    if yourdatetime.date() < datetime.today().date()
    # do something
    

Note that timedelta has the following format:

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

If you want to just compare dates,

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

或者,很明显,

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

If you want to check that they're 一样 date.

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

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

  • 年,月,月的日
  • time为小时,分钟,秒,微秒,时区信息
  • datetime combines date and time. It has the methods date() and time() to get the corresponding date and time objects, and there's a handy combine function to combine date and time into a datetime.

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

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

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

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

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

我们应该使用 .date()进行比较,但是我将这个方法作为一个例子,以备不时之需,例如,按月或按分钟进行比较,等等。

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

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