在Python中使用tz.localize将UTC日期时间转换为UK日期时间

在Python中使用tz.localize将UTC日期时间转换为UK日期时间,python,datetime,Python,Datetime,我正在尝试将UTC日期/时间转换为“欧洲/伦敦”时区。我曾尝试使用tz.localize使用日期,但我被告知日期时间并不幼稚。如果我试图删除时区,我仍然会得到相同的错误 从根本上说,我正在努力争取这个日期: 2016年5月4日15:00 自即日起: 2016年5月4日14:00 我的代码如下所示,我正在使用iso8601解析日期 date = 2016-05-04 15:00:00+00:00 fix_pars = iso8601.parse_date(str(date)) 我尝试过使用pyt

我正在尝试将UTC日期/时间转换为“欧洲/伦敦”时区。我曾尝试使用tz.localize使用日期,但我被告知日期时间并不幼稚。如果我试图删除时区,我仍然会得到相同的错误

从根本上说,我正在努力争取这个日期: 2016年5月4日15:00 自即日起: 2016年5月4日14:00

我的代码如下所示,我正在使用iso8601解析日期

date = 2016-05-04 15:00:00+00:00
fix_pars = iso8601.parse_date(str(date))
我尝试过使用pytz.localize,但没有成功,因为它不喜欢我的日期已经设置了时区

我觉得这方面的文档非常混乱。我想要的只是一个神奇的函数,它可以根据请求的时区获取日期并进行转换。我最好使用什么功能

import pytz
from datetime import datetime
tz = pytz.timezone('UTC')
naive_time = datetime.strptime('2016-04-05 15:00', '%Y-%m-%d %H:%M')
tz_time = tz.localize(naive_time)
london_tz = pytz.timezone('Europe/London')
london_time = tz_time.astimezone(london_tz)
以下是我的成果:

>>> print tz_time
2016-04-05 15:00:00+00:00
>>> print london_time
2016-04-05 16:00:00+01:00

您不需要使用utc时区进行本地化,因为它有一个固定的utc偏移量(零)。如果您有一个datetime对象(如其文本表示所示),则要将其转换为
Europe/London
时区:

london_dt = aware_dt.astimezone(pytz.timezone('Europe/London'))

仅此而已。

将我的代码修改为:date='2016-06-11 16:00:00+00:00'naive_time=datetime.strtime(date),%Y-%m-%d%H:%m')tz_time=tz.localize(naive_time)london_time=tz_time.astimezone(london_tz)但我得到了。。。数据_字符串[found.end():])值错误:未转换的数据保留::00+00:00@LemusThelroy您必须将其转换为字符串,然后从中删除时区:
str(theTime)[:-6]
,然后如果您想更新
naive_-time
变量以包括秒数
naive_-time=datetime.strtime(str(theTime)[:-6],“%Y-%m-%d%H:%m:%S”)
如果我想将伦敦时间转换为dd/mm/yyyy hh:mm格式,我应该使用什么函数?然后我会去阅读关于这个的文档。@LemusThelroy你仍然可以使用这个方法。您只需编辑格式化字符串即可:
naive_time=datetime.strtime('05/04/2016 15:00','%d/%m/%Y%H:%m')
date=2016-05-04 15:00+00:00
无效。你为什么打电话给str(日期)?什么是
类型(日期)