16

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

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

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

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

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

更新

谢谢希萨特。我刚刚找到了与您的解决方案非常相似的解决方案。发现这些链接有帮助 - 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
4

1 回答 1

14

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))
于 2011-09-07T03:53:44.923 回答