Python将datetime设置为UTC时区
我想用Python触发一个事件,每个周末从周五早上到周日早上 我已经编写了一些在本地环境下工作的代码,但我担心在部署到生产环境时,日期时间将被本地化,触发器将不正确。 理想情况下,我希望所有内容都与UTC同步,以下是我的尝试-我想看看它是否正确,是否有人对如何使其更干净有反馈 (代码对我有效,但无论如何我都在正确的时区:))Python将datetime设置为UTC时区,python,python-2.7,datetime,timezone,Python,Python 2.7,Datetime,Timezone,我想用Python触发一个事件,每个周末从周五早上到周日早上 我已经编写了一些在本地环境下工作的代码,但我担心在部署到生产环境时,日期时间将被本地化,触发器将不正确。 理想情况下,我希望所有内容都与UTC同步,以下是我的尝试-我想看看它是否正确,是否有人对如何使其更干净有反馈 (代码对我有效,但无论如何我都在正确的时区:)) 从日期时间导入日期时间 def eventTrigger(): 如果((datetime.weekday(datetime.today())==4)和(datetime.n
从日期时间导入日期时间
def eventTrigger():
如果((datetime.weekday(datetime.today())==4)和(datetime.now().utcnow.hour)>9):
返回真值
elif((datetime.weekday(datetime.today())==6)和(datetime.now().utcnow.hour)<10):
返回真值
elif(datetime.weekday(datetime.today())==5):
返回真值
其他:
返回错误
我试着阅读datetime文档,但它很混乱。datetime和时区很混乱,最好你能在这里仔细考虑一下 首先,库
pytz
可以提供帮助
from datetime import datetime
import pytz
然后,您可以在eventTrigger()
的顶部定义today
和now
变量,使其成为可靠的UTC变量,具体如下:
now_utc = datetime.now(pytz.utc)
today_utc = now_utc.date()
如果要使用Python 3标准库执行此操作,并且不需要对
pytz
进行外部依赖,请执行以下操作:
从日期时间导入日期时间,时区
现在\u utc=datetime.utcnow().replace(tzinfo=timezone.utc)
今天协调世界时=现在协调世界时日期()
太好了,谢谢!作为澄清,使用:datetime.now(pytz.utc)和:datetime.now().utcnow.hour之间的区别是什么?您是否同时运行了这两个命令并比较了输出?我发现:datetime.now().utcnow.hour中存在语法错误,该错误仅在测试事件时出现。。。我肯定在问问题之前我已经查过了。非常感谢Max:)我会接受答案,很抱歉:)这在Python2.x中不起作用。我知道Python2.x已经死了!但是,了解它对避免浪费时间很有用@Andre Carneiro I添加了这个答案适用的主要Python版本。
now_utc = datetime.now(pytz.utc)
today_utc = now_utc.date()