Чтобы преобразовать данную строку в наивный объект datetime:
>>> from datetime import datetime
>>> naive_dt = datetime.strptime('20111014T090000', '%Y%m%dT%H%M%S')
>>> naive_dt
datetime.datetime(2011, 10, 14, 9, 0)
Чтобы прикрепить часовой пояс (сделать его осведомленным объектом даты и времени):
>>> import pytz
>>> tz = pytz.timezone('America/Los_Angeles')
>>> local_dt = tz.localize(naive_dt, is_dst=None)
>>> print(local_dt.strftime("%Y-%m-%d %H:%M:%S %Z%z"))
2011-10-14 09:00:00 PDT-0700
Примечание: is_dst=None
используется для создания исключения для несуществующего или неоднозначного локального времени.
Чтобы получить метку времени POSIX от осведомленного объекта datetime:
>>> (local_dt - datetime(1970, 1, 1, tzinfo=pytz.utc)).total_seconds()
1318608000.0
Основные вопросы в вашем вопросе:
- Вы заменяете атрибут
tzinfo
, вместо него следует использовать tz.localize
mktime()
работает с местным временем (часовой пояс вашего компьютера), а не с UTC.