我想在 Python 中触发一个事件,每个周末在周五早上到周日早上之间。
我已经编写了一些适用于本地环境的代码,但我担心在部署到生产环境时,日期时间将被本地化并且触发器将不正确。理想情况下,我希望所有内容都同步到 UTC,这是我的尝试 - 我想看看它是否正确,以及是否有人对如何使其更干净有反馈。
(代码对我有用,但我还是在正确的时区:)
from datetime import datetime
def eventTrigger():
if((datetime.weekday(datetime.today()) == 4) and (datetime.now().utcnow.hour) > 9):
return True
elif ((datetime.weekday(datetime.today()) == 6) and (datetime.now().utcnow.hour) < 10):
return True
elif (datetime.weekday(datetime.today()) == 5):
return True
else:
return False
我尝试阅读日期时间文档,但这很令人困惑。
如果你想
使用 Python 3 标准库来做到这一点,并且没有外部依赖pytz
:
from datetime import datetime, timezone
now_utc = datetime.utcnow().replace(tzinfo=timezone.utc)
today_utc = now_utc.date()
日期时间和时区令人困惑,最好您确保在这里深思熟虑。
首先,图书馆pytz
可以提供帮助
from datetime import datetime
import pytz
然后,您可以使用以下命令在eventTrigger()
顶部定义today
和now
变量,以可靠地采用 UTC:
now_utc = datetime.now(pytz.utc)
today_utc = now_utc.date()