Пытаясь вычесть дни из даты и времени и преобразовать их в строку - PullRequest
0 голосов
/ 24 февраля 2020

Из того, что я видел, это должно работать, даже если оно не самое красивое. Я перепробовал множество вещей, но, похоже, не работает ни с чем, и лучшее, что я смог сделать, это изменить сообщение об ошибке. Lol.

try:
 date= dt.datetime.now()
 d1=date- timedelta(days=1)
 d1.strftime('%Y%m%d')
 url= 'http://regsho.finra.org/FNQCshvol'+d1+'.txt'

Ответы [ 3 ]

0 голосов
/ 24 февраля 2020

Я немного изменил ваш код. В нем было несколько ошибок, и он не работал. Основная проблема, с которой вы столкнулись, заключается в том, что вы пытались объединить строку с объектом datetime. Вы правильно применили strftime, но не сохранили строку. Эту строку вы можете объединить с другой строкой.

import datetime as dt

date = dt.datetime.now()
d1 = date - dt.timedelta(days=1)
d1_string = d1.strftime('%Y%m%d')
url = 'http://regsho.finra.org/FNQCshvol{timestamp}.txt'.format(timestamp=d1_string)
0 голосов
/ 24 февраля 2020

В вашем коде вы не присваиваете результат datetime.strftime() переменной. Решение простое:

from datetime import datetime, timedelta

current_date = datetime.now()                     # store current date and time
required_date = current_date - timedelta(days=1)  # substitute 1 day
str_date = required_date.strftime('%Y%m%d')       # apply formatting
url = f'http://regsho.finra.org/FNQCshvol{str_date}.txt'

Вы также можете сделать это в одну строку (что делает код гораздо менее читабельным) :

url = f"http://regsho.finra.org/FNQCshvol{(datetime.now() - timedelta(days=1)).strftime('%Y%m%d')}.txt"
0 голосов
/ 24 февраля 2020

Попробуйте следующее:

from datetime import timedelta
import datetime as dt

date = dt.datetime.now()
d1 = date - timedelta(days=1)
d1 = d1.strftime('%Y%m%d')          # I changed this line
url = 'http://regsho.finra.org/FNQCshvol' + d1 + '.txt'

strftime () возвращает строку, она не преобразует саму дату в строку.

...