Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python将datetime设置为UTC时区_Python_Python 2.7_Datetime_Timezone - Fatal编程技术网

Python将datetime设置为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

我想用Python触发一个事件,每个周末从周五早上到周日早上

我已经编写了一些在本地环境下工作的代码,但我担心在部署到生产环境时,日期时间将被本地化,触发器将不正确。 理想情况下,我希望所有内容都与UTC同步,以下是我的尝试-我想看看它是否正确,是否有人对如何使其更干净有反馈

(代码对我有效,但无论如何我都在正确的时区:))

从日期时间导入日期时间
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()