Python - 将昨天的日期作为YYYY-MM-DD格式的字符串

时间:2015-05-27 13:29:57

标签: python python-2.7 python-3.x date datetime

作为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)

必须有更优雅的方式来做到这一点,对教育目的和其他任何事情都感兴趣!

4 个答案:

答案 0 :(得分:39)

你只需要从今天的某一天减去一天。 datetime.timedelta(1)会给你一个timedelta object,它是一天的持续时间,可以从datetime对象中减去。然后,您可以在orer中使用datetime.strftime根据您的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'

答案 1 :(得分:3)

>>> import datetime
>>> datetime.date.fromordinal(datetime.date.today().toordinal()-1).strftime("%F")
'2015-05-26'

答案 2 :(得分:1)

使用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

答案 3 :(得分:0)

.isoformat()对象上调用date会给您YYYY-MM-DD

from datetime import date, timedelta
(date.today() - timedelta(1)).isoformat()