首页 > 解决方案 > 如何检查日期是否是昨天

问题描述

我试图找出昨天和今天之间的区别。如果是昨天,则执行。这是我的代码:

d1 = datetime.datetime.strptime(str(date_posted), "%Y-%m-%d %H:%M:%S")
d2 = datetime.datetime.strptime(str(datetime.datetime.today()), "%Y-%m-%d %H:%M:%S")
difference = abs((d2 - d1).days)

但我不断收到此错误:

Traceback (most recent call last):
  File "C:\Users\fatima.arshad\AppData\Local\Continuum\anaconda2\envs\web_scraping\lib\site-packages\twisted\internet\defer.py", line 654, in _runCallbacks
    current.result = callback(current.result, *args, **kw)
  File "C:/Users/fatima.arshad/PycharmProjects/arabam/DailyArabamSpider.py", line 44, in parse
    d2 = datetime.datetime.strptime(str(datetime.datetime.today()), "%Y-%m-%d %H:%M:%S")
  File "C:\Users\fatima.arshad\AppData\Local\Continuum\anaconda2\envs\web_scraping\lib\_strptime.py", line 565, in _strptime_datetime
    tt, fraction = _strptime(data_string, format)
  File "C:\Users\fatima.arshad\AppData\Local\Continuum\anaconda2\envs\web_scraping\lib\_strptime.py", line 365, in _strptime
    data_string[found.end():])
ValueError: unconverted data remains: .722653

标签: pythondatedatetime

解决方案


如果您只想获得天数的差异,则无需将日期转换为字符串然后返回日期。

d1 = datetime.datetime.strptime(str(date_posted), "%Y-%m-%d %H:%M:%S")
d2 = datetime.datetime.today()
difference = abs((d2 - d1).days)

如果你想剥离微秒使用.replace()

d = datetime.today()
print(d)  # 2020-04-23 18:09:34.039505
print(d.replace(microsecond=0))  # 2020-04-23 18:09:34

话虽如此,使用timedelta.days == 1确定两个日期是否至少相隔 24 小时。如果您想知道它是否发生在昨天(例如今天的星期四,而其他日期是前一个星期三或更早),请按照用户@Daweo 的建议使用他们的日期进行比较。为了完成,包括在下面:

d1 = datetime.datetime.strptime(str(date_posted), "%Y-%m-%d %H:%M:%S").date()
d2 = datetime.datetime.today().date()
difference = abs((d2 - d1).days)

推荐阅读