Это проблема:
if date_string.find('Z'):
date_string = date_string[:len(date_string)-1]
Проблема в том, что string.find()
возвращает -1
, если цель не найдена. Поскольку -1 не равен нулю, оператор if
является истинным, и тогда ваш код обрезает последний символ строки (был ли это Z
или нет).
Вы делаете это усечение дважды в случае utc_date
и один раз в случае local_date
, таким образом, ваши различные результаты.
Я бы предложил:
if date_string.endswith('Z'):
date_string = date_string[:-1]