web-dev-qa-db-ja.com

Python-昨日の日付をYYYY-MM-DD形式の文字列として取得する

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)

これを行うには、他の何よりも教育目的に興味がある、よりエレガントな方法が必要です!

25
Jacob

今日の日付から1日を差し引くだけです。 datetime.timedelta(1)は、 timedeltaオブジェクト になります。これは1日の期間であり、datetimeオブジェクトから減算できます。次に、 datetime.strftime をorerで使用して、 espected format に基づいて日付オブジェクトを文字列に変換できます。

>>> 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'
55
Kasramvd

today()メソッドを使用して現在の日付を計算し、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
4
Rahul Mody
>>> import datetime
>>> datetime.date.fromordinal(datetime.date.today().toordinal()-1).strftime("%F")
'2015-05-26'
3
Paul Rubel