2 回答
TA贡献1829条经验 获得超4个赞
datetime.today - timedelta(days=1)
给出一个错误,因为datetime.today
是一个需要调用的函数。这就是为什么你一定觉得需要time_now()
用括号来写:它调用该函数两次(结果不同,因为时间有流逝的趋势)。避免
strftime
支持date()
,它仅返回日期部分(作为datetime.date
对象)。使用
datetime.now()
而不是datetime.today()
减去 atimedelta
可以考虑时区(以及夏令时转换)。
那么你会得到这个:
from datetime import datetime, timedelta
def passed_midnight(delta=1):
time_now = datetime.now()
time_ago = time_now - timedelta(minutes=delta)
return time_now.date() != time_ago.date()
TA贡献1829条经验 获得超7个赞
您可能误解了如何声明函数以及如何调用它。这是修复函数调用问题的版本:
from datetime import datetime, timedelta
def passed_midnight(delta=1):
today = datetime.today()
time_ago = today - timedelta(minutes=delta)
return today.strftime("%Y%m%d") != time_ago.strftime("%Y%m%d")
>>> print(passed_midnight(10))
False
请注意,此代码不考虑时区。不同位置的行为会有所不同
添加回答
举报