跳到主内容

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

· 2分钟阅读

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

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

解决方法

你只需要从今天的日期减去一天。在 Python 中,datetime.timedelta对象允许您将特定时间跨度创建为timedelta对象

datetime.timedelta(1)为您提供“一天”的持续时间,并且可以从datetime对象中减去。在减去您可以使用的对象之后,您可以datetime.strftime根据您选择的格式将结果(日期对象)转换为字符串格式:

>>> from datetime import datetime, timedelta
>>> yesterday = datetime.now() - timedelta(1)

>>> type(yesterday)
>>> datetime.datetime

>>> datetime.strftime(yesterday, '%Y-%m-%d')
'2015-05-26'

请注意datetime.strftime,您也可以直接使用对象的strftime方法,而不是调用函数datetime

>>> (datetime.now() - timedelta(1)).strftime('%Y-%m-%d')
'2015-05-26'

作为一个函数

def yesterday(string=False, frmt='%Y-%m-%d'):
yesterday = datetime.now() - timedelta(1)
if string:
return yesterday.strftime(frmt)
return yesterday