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

时间:2011-09-07 03:40:28

标签: python timezone timestamp pytz

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

timestamp1 = 2011-08-24 13:39:00 +0800

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

timestamp2 = 2011-08-24 15:39:00 +1000

我尝试过使用pytz但是找不到很多显示如何使用偏移信息的例子。我在stackoverflow上找到的另一个描述这个确切问题的链接是here。我希望有一些更好的方法可以使用pytz处理这个问题。提前感谢所有建议:)。

更新

谢谢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

1 个答案:

答案 0 :(得分:9)

一旦有了datetime对象,

datetime.astimezone将进行基本转换。如果你想从字符串中获取一个datetime对象,请点击安装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))