Python - Получить вчера дату в виде строки в формате ГГГГ-ММ-ДД
В качестве ввода для запроса API мне нужно получить вчера дату в виде строки в формате YYYY-MM-DD
. У меня есть рабочая версия:
yesterday = datetime.date.fromordinal(datetime.date.today().toordinal()-1)
report_date = str(yesterday.year) + \
('-' if len(str(yesterday.month)) == 2 else '-0') + str(yesterday.month) + \
('-' if len(str(yesterday.day)) == 2 else '-0') + str(yesterday.day)
Должен быть более элегантный способ сделать это, заинтересованный в образовательных целях, как и все остальное!
Ответы
Ответ 1
Вам просто нужно вычесть один день с сегодняшнего дня. datetime.timedelta(1)
предоставит вам timedelta
object, который длится один день и вычитается из объекта datetime
. Затем вы можете использовать datetime.strftime
в orer для преобразования объекта даты в строку на основе ожидаемый формат:
>>> from datetime import datetime, timedelta
>>> datetime.strftime(datetime.now() - timedelta(1), '%Y-%m-%d')
'2015-05-26'
Обратите внимание, что вместо вызова функции datetime.strftime
вы также можете напрямую использовать метод strftime
объектов datetime
:
>>> (datetime.now() - timedelta(1)).strftime('%Y-%m-%d')
'2015-05-26'
Ответ 2
>>> import datetime
>>> datetime.date.fromordinal(datetime.date.today().toordinal()-1).strftime("%F")
'2015-05-26'
Ответ 3
Альтернативный ответ, который использует метод today()
для вычисления текущей даты, а затем вычитает timedelta()
с помощью timedelta()
. Остальные шаги остаются прежними.
https://docs.python.org/3.7/library/datetime.html#timedelta-objects
from datetime import date, timedelta
today = date.today()
yesterday = today - timedelta(days = 1)
print(today)
print(yesterday)
Output:
2019-06-14
2019-06-13