2011-09-07 34 views
8

我有一个时区信息字符串格式的时间戳,我想将其转换为使用我的本地时区显示正确的日期/时间。因此,对于如...我有python pytz将一个时区(字符串格式)从一个时区转换为另一个时区

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

,我想转换这样说的时区偏移+1000到dsiplay

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

我曾尝试使用pytz但无法找到许多例子说明如何使用偏移量信息。我在stackoverflow上找到的描述这个确切问题的另一个链接是here。我希望有更好的方法可以使用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 
+0

考虑标志着Cixate的答案,通过点击复选框正确的,因为你的最终解决方案是接近Cixate的建议。 – wberry

回答

9

datetime.astimezone会做你的基本转换一旦你有一个DateTime对象。如果你想从一个字符串日期时间对象,PIP安装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)) 
+0

感谢Cixate ..我刚刚得到了使用dateutil.parser和datetime.astimezone的解决方案。我的解决方案与您的解决方案有点不同。请原谅我的无知,但请您详细说明如何使用“tzoffset(无,3600)”获取时区信息。“ – Angela

+0

”在您的示例中,您想翻译为“+1000”的偏移量,不幸的是我读为“+0100 “但校长是一样的。 tzoffset()的第一个参数是一个名字,如果你不关心它,它可以是None。第二个是以秒为单位的UTC偏移量。所以3600为1小时或36000为10小时。 – six8

+0

感谢Cixate的解释。 – Angela

相关问题