Python3.5时区转换

时间:2019-01-20 15:58:23

标签: python datetime python-3.5

我在此处尝试过许多有关转换时区对象的帖子/建议,但均失败了。我希望有人能指出一个简单的方法。

我的字符串/日期时间为2017-05-11T16:24:56-04:00 我可以通过多种方法将其解析为datetime对象,例如dateutil等。 打印时我得到

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

所以它得到一个tzoffset。

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

如何将该字符串转换为本地时区(美国东部标准时间,或-5hrs偏移)。

编辑:尝试使用astimezone()可以使我得到这一点:

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

谢谢!

1 个答案:

答案 0 :(得分:1)

使用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