Python pytz 在时区间转换时间戳(字符串格式)

16 投票
1 回答
19174 浏览
提问于 2025-04-17 01:38

我有一个带有时区信息的时间戳,它是以字符串的形式存在的。我想把它转换成显示我本地时区的正确日期和时间。比如说,我有

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

我想把它转换成时区偏移量为 +1000 的格式来显示

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

我试过使用 pytz,但找不到很多关于如何使用偏移信息的例子。我在 StackOverflow 上找到的另一个链接正好描述了这个问题,链接在 这里。我希望能找到更好的方法来使用 pytz 处理这个问题。提前感谢大家的建议 :).

更新

谢谢 Cixate。我刚找到的解决方案和你的非常相似。觉得这些链接很有帮助 - 链接1链接2

我把解决方案发出来,供大家参考

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 个回答

14

datetime.astimezone 可以帮助你在有了一个日期时间对象后进行基本的时区转换。如果你想从一个字符串获取一个日期时间对象,可以通过 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))

撰写回答