Как проверить, если дата вчера - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь найти разницу между вчера и сегодня. Если вчера, то выполнить. Это мой код:

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

Ответы [ 2 ]

0 голосов
/ 23 апреля 2020

Поскольку вы работаете в днях, вы можете преобразовать d1 в datetime.date, а затем сравнить его с сегодняшними datetime.date, то есть:

import datetime
d1 = datetime.datetime.strptime(str(date_posted), "%Y-%m-%d %H:%M:%S").date()
d2 = datetime.date.today()
difference = abs((d2 - d1).days)
0 голосов
/ 23 апреля 2020

Если вы просто хотите получить разницу в днях, нет необходимости приводить дату к строке, а затем вернуться к дате.

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...