给出以下表示UTC时间的Python日期时间对象:
2016-09-15 22:13:03-2:00
我正在尝试获取相应的本地时间日期时间,其中应用了UTC偏移量:
2016-09-15 20:13:03
我希望在datetime模块中找到一个能够做到这一点的方法,但是我没有成功。非常感谢任何帮助。
此致
答案 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'