Pytz Python Timezone Conversion не работает

Я пытаюсь преобразовать часовой пояс Pytz «Европа / Лондон» в UTC без успеха:

>>>tz=pytz.timezone("Europe/London") >>>date=datetime.datetime(2015,1,1,4,4) >>>tz.normalize(tz.localize(date)).astimezone(pytz.utc) datetime.datetime(2015, 1, 1, 4, 4, tzinfo=<UTC>) >>>tz.localize(date) datetime.datetime(2015, 1, 1, 4, 4, tzinfo=<DstTzInfo 'Europe/London'GMT0:00:00 STD>) 

Это просто неправильно, почему линия прямо выше в GMT-0, когда она должна быть GMT + 1. Лондонское время в настоящее время на час раньше UTC из-за экономии дневного света, но код не производит этого.

 >>>tz.normalize(tz.localize(date)).astimezone(pytz.utc) #should produce: datetime.datetime(2015, 1, 1, 3, 4, tzinfo=<UTC>) 

Вы не должны ожидать летнего времени в январе в Северном полушарии в Лондоне.

Версия pytz-2015.4 дает тот же (правильный) результат:

 >>> from datetime import datetime >>> import pytz >>> d = datetime(2015, 1, 1, 4, 4) >>> tz = pytz.timezone('Europe/London') >>> tz.localize(d, is_dst=None).astimezone(pytz.utc) datetime.datetime(2015, 1, 1, 4, 4, tzinfo=<UTC>) >>> tz.localize(d, is_dst=None) datetime.datetime(2015, 1, 1, 4, 4, tzinfo=<DstTzInfo 'Europe/London' GMT0:00:00 STD>) 

zdump на моей системе согласен с этим:

 $ zdump -v Europe/London | grep 2015 Europe/London Sun Mar 29 00:59:59 2015 UT = Sun Mar 29 00:59:59 2015 GMT isdst=0 gmtoff=0 Europe/London Sun Mar 29 01:00:00 2015 UT = Sun Mar 29 02:00:00 2015 BST isdst=1 gmtoff=3600 Europe/London Sun Oct 25 00:59:59 2015 UT = Sun Oct 25 01:59:59 2015 BST isdst=1 gmtoff=3600 Europe/London Sun Oct 25 01:00:00 2015 UT = Sun Oct 25 01:00:00 2015 GMT isdst=0 gmtoff=0 

т. е. до 29 марта 2015 года в Лондоне значение utc не равно нулю.

Сама база данных tz соглашается: Европа / Лондон использует правила ЕС для перехода на летнее время с 1996 года: летнее время не начинается до последнего воскресенья марта .