2 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超4個(gè)贊
datetime.today - timedelta(days=1)
給出一個(gè)錯(cuò)誤,因?yàn)?code>datetime.today是一個(gè)需要調(diào)用的函數(shù)。這就是為什么你一定覺(jué)得需要time_now()
用括號(hào)來(lái)寫(xiě):它調(diào)用該函數(shù)兩次(結(jié)果不同,因?yàn)闀r(shí)間有流逝的趨勢(shì))。避免
strftime
支持date()
,它僅返回日期部分(作為datetime.date
對(duì)象)。使用
datetime.now()
而不是datetime.today()
減去 atimedelta
可以考慮時(shí)區(qū)(以及夏令時(shí)轉(zhuǎn)換)。
那么你會(huì)得到這個(gè):
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貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
您可能誤解了如何聲明函數(shù)以及如何調(diào)用它。這是修復(fù)函數(shù)調(diào)用問(wèn)題的版本:
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
請(qǐng)注意,此代碼不考慮時(shí)區(qū)。不同位置的行為會(huì)有所不同
添加回答
舉報(bào)