Почему Pandas tz_convert не может преобразовать UTC в часовой пояс Европы / Лондона на 2038 год? - PullRequest
0 голосов
/ 18 февраля 2019

Pandas DatetimeIndex.tz_convert () неправильно преобразовывает данные о часовом поясе UTC в часовой пояс Европы / Лондона для 2038 года. Преобразование работает для 2037 года, поэтому эта ошибка, похоже, связана с ошибкой Y2K38 (хотя странно, что я использую Python в 64-битном режиме, и ошибка Y2K38, похоже, связана с 32-битным)

Создание DatetimeIndex в UTC для некоторых случайных дней в июне, как для 2037, так и для 2038:

s_2037 = pd.date_range(start='13/06/2037', 
                   end='14/06/2037',freq='H',tz='UTC')[0:3]
s_2037
DatetimeIndex(['2037-06-13 00:00:00+00:00', '2037-06-13 01:00:00+00:00',
               '2037-06-13 02:00:00+00:00'],
              dtype='datetime64[ns, UTC]', freq='H')

s_2038 = pd.date_range(start='13/06/2038',end='14/06/2038',freq='H',tz='UTC')[0:3]
s_2038
DatetimeIndex(['2038-06-13 00:00:00+00:00', '2038-06-13 01:00:00+00:00',
               '2038-06-13 02:00:00+00:00'],
              dtype='datetime64[ns, UTC]', freq='H')

Преобразование этого значения в часовой пояс Европы / Лондона (т. Е. Лондонское время) на 2037 год. Мы видим влияние перехода на летнее время (DST): все времена корректно сдвигаются вперед на один час.

s_2037.tz_convert('Europe/London')
DatetimeIndex(['2037-06-13 01:00:00+01:00', '2037-06-13 02:00:00+01:00',
               '2037-06-13 03:00:00+01:00'],
              dtype='datetime64[ns, Europe/London]', freq='H')

Но не для 2038: метка часового пояса обновляется, но часы не смещаются должным образом!

s_2038.tz_convert('Europe/London')
DatetimeIndex(['2038-06-13 00:00:00+00:00', '2038-06-13 01:00:00+00:00',
               '2038-06-13 02:00:00+00:00'],
              dtype='datetime64[ns, Europe/London]', freq='H')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...