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')