将无意识时间戳转换为UTC转换的感知时间戳

Tam*_*mpa 3 python timezone pytz

我使用下面的代码创建了一个不知道的日期时间,因为时间在"US/Eastern",我需要在UTC中使用它.我想先让日期时间知道EST,然后转换为UTC.

import datetime
import pytz
from pytz import timezone
dt = "8/8/2013 4:05:03 PM"
dt = datetime.datetime.strptime(dt,"%m/%d/%Y %I:%M:%S %p")
unaware_est = dt.strftime("%Y-%m-%dT%H:%M:%S")
localtz = timezone('US/Eastern')
utc = localtz.localize(unaware_est)
Run Code Online (Sandbox Code Playgroud)

错误信息:

Traceback (most recent call last):
  File "/home/ubuntu/workspace/druidry-codebase/services/xignite/test.py", line 120, in <module>
    quote_time = localtz.localize(quote_time)
  File "/usr/local/lib/python2.7/dist-packages/pytz-2013b-py2.7.egg/pytz/tzinfo.py", line 303, in localize
    if dt.tzinfo is not None:
AttributeError: 'str' object has no attribute 'tzinfo'
Run Code Online (Sandbox Code Playgroud)

Mat*_*int 6

localize方法采用a datetime而不是字符串.所以strftime应该删除调用.

import datetime
import pytz
from pytz import timezone
dt = "8/8/2013 4:05:03 PM"
unaware_est = datetime.datetime.strptime(dt,"%m/%d/%Y %I:%M:%S %p")
localtz = timezone('US/Eastern')
aware_est = localtz.localize(unaware_est)
Run Code Online (Sandbox Code Playgroud)

这仍然没有给你UTC.如果你想要,你需要跟进:

utc = aware_est.astimezone(pytz.utc)
Run Code Online (Sandbox Code Playgroud)