Python pytz将时间戳(字符串格式)从一个时区转换为另一个时区

Ang*_*ela 13 python timezone timestamp pytz

我有一个带有字符串格式的时区信息的时间戳,我想将其转换为使用我的本地时区显示正确的日期/时间.所以对于例如......我有

timestamp1 = 2011-08-24 13:39:00 +0800
Run Code Online (Sandbox Code Playgroud)

我想将此转换为时区偏移+1000到dsiplay

timestamp2 = 2011-08-24 15:39:00 +1000
Run Code Online (Sandbox Code Playgroud)

我尝试过使用pytz但是找不到很多显示如何使用偏移信息的例子.我对计算器展示了这个确切的问题找到一个其他的链接是这里.我希望有一些更好的方法可以使用pytz处理这个问题.感谢提前的所有建议:).

UPDATE

谢谢Cixate.我刚刚找到了与你的解决方案非常相似的解决方案.发现这些链接很有用 - LINK1LINK2

为每个人发布解决方案都会带来好处

from datetime import datetime
import sys, os
import pytz
from dateutil.parser import parse

datestr = "2011-09-09 13:20:00 +0800"
dt = parse(datestr)
print dt
localtime = dt.astimezone (pytz.timezone('Australia/Melbourne'))
print localtime.strftime ("%Y-%m-%d %H:%M:%S")
2011-09-09 15:20:00
Run Code Online (Sandbox Code Playgroud)

six*_*ix8 10

一旦有了datetime对象,datetime.astimezone就会进行基本转换.如果您正在尝试从字符串中获取datetime对象,请使用pip install python-dateutil,它就像下面这样简单:

>>> from dateutil.parser import parse
>>> from dateutil.tz import tzoffset
>>> dt = parse('2011-08-24 13:39:00 +0800')
datetime.datetime(2011, 8, 24, 13, 39, tzinfo=tzoffset(None, 28800))
>>> dt.astimezone(tzoffset(None, 3600))
datetime.datetime(2011, 8, 24, 6, 39, tzinfo=tzoffset(None, 3600))
Run Code Online (Sandbox Code Playgroud)