繁体   English   中英

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

[英]How can I check if a date is the same day as datetime.today()?

该条件即使在同一天也总是计算为True因为它正在比较时间。

from datetime import datetime

# ...

if date_num_posts < datetime.today(): 

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

如果您只想比较日期,

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

或者,显然

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

如果要检查它们是同一日期。

该文档通常很有帮助。 通常,它也是python thing_i_have_a_question_about的第一个Google搜索结果。 除非您的问题与名为“ snake”的功能/模块有关。

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

  • 年,月,日的date
  • time ,小时,分钟,秒,微秒,时区信息
  • datetime结合了日期和时间。 它具有date()time()来获取相应的datetime对象,并且还有一个方便的combine函数,用于将datetime组合成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]]]]]]])

因此,您可以根据实际需要检查diff的天数,秒数,毫秒,分钟等。

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)

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

但是,如果您必须比较数百个日期时间,则可能会更快,因为您只需要执行一次replace()即可进行数百次对date()的调用

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

应该使用.date()进行比较,但是如果有人想要按月或按分钟等进行比较,我.date()该方法为例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM