首页 > 解决方案 > Python3.5时区转换

问题描述

我在这里尝试了许多关于转换时区对象的帖子/建议,但都失败了。我希望有人能给我指出一个简单的方法来做到这一点。

我有一个字符串/日期时间,2017-05-11T16:24:56-04:00 我可以通过多种方式(dateutil 等)将其解析为日期时间对象。打印时我得到

datetime.datetime(2017, 5, 11, 16, 24, 56, tzinfo=tzoffset(None, -14400))

所以它得到一个tzoffset。

尝试任何转换似乎都不会更新实际时间部分,只是更新区域信息。

如何将此字符串转换为我的本地时区(EST,或偏移量 -5 小时)。

编辑:尝试 astimezone() 让我得到这个:

dt.astimezone()                                                                   
Out[18]: datetime.datetime(2017, 5, 11, 16, 24, 56, 
tzinfo=datetime.timezone(datetime.timedelta(-1, 72000), 'EDT'))

谢谢!

标签: pythondatetimepython-3.5

解决方案


当您使用它进行转换时,tzinfo您只需更改输出字符串的后缀(例如使用 tzutc()):2017-05-11 16:24:56+00:00

如果你想在你的时区打印它,首先使用它代表的实际时区创建 datetime 对象:

dt = datetime(2017, 5, 11, 16, 24, 56,
              tzinfo=tzoffset(None, -18000))
# 2017-05-11 16:24:56-05:00

然后使用以下命令将其转换为所需的时区:

mydt = dt.astimezone(tzutc())
# 2017-05-11 21:24:56+00:00

推荐阅读