Python:将UTC时间转换为给定UTC偏移量的本地时间

时间:2016-11-03 23:28:47

标签: python datetime

给出以下表示UTC时间的Python日期时间对象:

2016-09-15 22:13:03-2:00

我正在尝试获取相应的本地时间日期时间,其中应用了UTC偏移量:

2016-09-15 20:13:03

我希望在datetime模块中找到一个能够做到这一点的方法,但是我没有成功。非常感谢任何帮助。

此致

1 个答案:

答案 0 :(得分:0)

我不知道这是否是最好的答案,但这就是我对你的要求。通常我不这样做,因为最好使用UTC时间并转换

这是一个例子:

value = datetime.datetime.strptime(str(utc_datetime), '%Y-%m-%d %H:%M:%S').replace(tzinfo=pytz.utc)
value = value.astimezone(pytz.timezone("America/Los_Angeles"))

我无法使用您的日期时间,因为语法有点偏离所以我继续使用dateutil.parser将其转换为日期时间对象

>>> from dateutil.parser import parse
>>> val = parse('2016-09-15 22:13:03-2:00')

还有其他方法可以将datetime对象设置为UTC,但我发现pytz是最简单的

>>> import pytz
>>> utc_val = val.replace(tzinfo=pytz.utc)

这是这两个值的输出。从这里我抓住delta并减去它

>>> val, utc_val
(datetime.datetime(2016, 9, 15, 22, 13, 3, tzinfo=tzoffset(None, -7200)), datetime.datetime(2016, 9, 15, 22, 13, 3, tzinfo=<UTC>))
>>>
>>> delta = val - utc_val

我删除了tzinfo,因为这是转换后的日期时间值

>>> local_dt = (val - delta).replace(tzinfo=None)
>>> local_dt
datetime.datetime(2016, 9, 15, 20, 13, 3)
>>> str(local_dt)
'2016-09-15 20:13:03'