我正在研究一个在某些时候触发通知的Python应用程序。我开始在意大利开展这个项目并且计划工作正常,但现在我回到了美国,时机已经完全错了。实际时间和显示的时间之间有四个小时的时差,这很奇怪,因为意大利提前了6个小时。
例如,datetime.utcnow()显示的时间是2016-05-10T18:55:47.920001Z,但时间实际上是2016-05-10T14:55:47.920001Z
now = datetime.datetime.utcnow().isoformat() + 'Z' # 'Z' indicates UTC time
我尝试使用pytz来设置时区(这给了我正确的时间),但是我将当前时间发送到(Google日历)的API将不会接受它。这个时间不被接受,但上面的代码行是,但时间错了。
eastern = pytz.timezone("America/New_York")
now = datetime.datetime.now(tz=eastern).isoformat() + 'Z' # 'Z' indicates UTC time
如何让datetime.datetime.utcnow()反映我当前的时间?
答案 0 :(得分:0)
尝试:
from datetime import datetime, timezone
now = datetime.now(timezone.utc).astimezone()。isoformat()+' Z' #' Z'表示UTC时间 打印(现在)
答案 1 :(得分:0)
.utcnow()
以UTC格式返回时间。无论您身在何处,它都会返回完全相同的值。意大利和美国的UTC时间相同。
要生成rfc3339 timestamp:.utcnow().isoformat() + 'Z'
是正确的。
datetime.now(eastern).isoformat() + 'Z'
错了。仅使用datetime.now(eastern).isoformat()
:
>>> from datetime import datetime
>>> import pytz
>>> eastern = pytz.timezone('America/New_York')
>>> datetime.utcnow().isoformat()+'Z', datetime.now(eastern).isoformat()
('2016-05-11T15:25:18.857833Z', '2016-05-11T11:25:18.857860-04:00')
两者都返回相同的时间(如果我们忽略微秒)。今天,15:25UTC与纽约的11:25相同:
<local time> == <utc time> + <utc offset>
11:25 == 15:25 + (-04:00)