我在此处尝试过许多有关转换时区对象的帖子/建议,但均失败了。我希望有人能指出一个简单的方法。
我的字符串/日期时间为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'))
谢谢!
答案 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