Jac*_*cob 32 python datetime date python-2.7 python-3.x
作为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)
Run Code Online (Sandbox Code Playgroud)
必须有一种更优雅的方式来做到这一点,对教育目的感兴趣,就像其他任何事情一样!
Kas*_*mvd 63
你只需要从今天的日期减去一天.datetime.timedelta(1)会告诉你一个持续时间为一天的timedelta物体,它可以从datetime物体中减去.然后,您可以使用datetime.strftimeorer将日期对象转换为基于您所期望的格式的字符串:
>>> from datetime import datetime, timedelta
>>> datetime.strftime(datetime.now() - timedelta(1), '%Y-%m-%d')
'2015-05-26'
Run Code Online (Sandbox Code Playgroud)
请注意datetime.strftime,您也可以直接使用对象的strftime方法,而不是调用函数datetime:
>>> (datetime.now() - timedelta(1)).strftime('%Y-%m-%d')
'2015-05-26'
Run Code Online (Sandbox Code Playgroud)
小智 10
An alternative answer that uses today() method to calculate current date and then subtracts one using timedelta(). Rest of the steps remain the same.
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
Run Code Online (Sandbox Code Playgroud)
>>> import datetime
>>> datetime.date.fromordinal(datetime.date.today().toordinal()-1).strftime("%F")
'2015-05-26'
Run Code Online (Sandbox Code Playgroud)
小智 6
调用.isoformat()一个date对象会给你YYYY-MM-DD
from datetime import date, timedelta
(date.today() - timedelta(1)).isoformat()
Run Code Online (Sandbox Code Playgroud)