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

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)

  • 除了“strftime”之外,您还可以使用“isoformat()” (2认同)

小智 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)

  • **这个答案具有误导性**。请注意,您仍然需要将日期对象转换为字符串。`print` 函数自动以该格式打印日期,但这并不意味着对象是字符串并以这种方式格式化! (2认同)

Pau*_*bel 6

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