我对python请求有问题。在此请求中,我需要设置两个日期,今天和昨天。直到今天,在我的整个测试过程中,它一直没有问题。
这里的问题是,我们当然才刚刚开始一个新的月。
我目前正在使用以下日期代码,但是由于我现在已经意识到它们不考虑每月重置。
yesterday = str(datetime.datetime.today().month) + "/" +
str(datetime.datetime.today().day-1) + "/" +
str(datetime.datetime.today().year)
today = str(datetime.datetime.today().month) + "/" +
str(datetime.datetime.today().day) + "/" +
str(datetime.datetime.today().year)
日期不为0时,应用程序将像超级按钮一样工作。
答案 0 :(得分:3)
使用datetime.timedelta
例如:
import datetime
today = datetime.datetime.now()
print(today.strftime("%m/%d/%Y"))
yesterday = (today - datetime.timedelta(days=1)).strftime("%m/%d/%Y")
print(yesterday)
输出:
10/01/2018
09/30/2018
strftime
来获取字符串中所需的日期格式答案 1 :(得分:3)
您可以使事情变得过于复杂,而不必担心“环绕”等问题。在您的代码中,您用1
减去了天数,但是如果我们是月份的第一天(例如 October,1st ),然后从中减去1,即可得出“ October 0th”(十分)。
最好在date
对象上执行算术 :
yesterday_date = datetime.date.today() - datetime.timestamp(days=1)
,然后将其转换为字符串:
yesterday = yesterday_date.strftime('%m/%d/%Y')
在撰写本文时,会生成:
>>> yesterday_date.strftime('%m/%d/%Y')
'09/30/2018'
在打印过程中执行算术会同时赋予“两个职责”,这通常是糟糕的软件设计:这个想法是一个职责。