Ответ 1
Вы не можете назначить часовой пояс в конструкторе datetime
, потому что он не дает объекту часового пояса возможность корректировать переход на летнее время - дата недоступна для него. Это приводит к еще большему количеству проблем для некоторых частей мира, где имя и смещение часового пояса изменились с годами.
К сожалению, использование аргумента tzinfo стандартных конструкторов datetime 'не работает с pytz для многих часовых поясов.
Используйте метод localize
с наивным datetime.
>>> Pacific.localize(datetime.datetime(2013, 6, 1, 12)).astimezone(pytz.utc)
datetime.datetime(2013, 6, 1, 19, 0, tzinfo=<UTC>)
>>> Pacific.localize(datetime.datetime(2013, 1, 1, 12)).astimezone(pytz.utc)
datetime.datetime(2013, 1, 1, 20, 0, tzinfo=<UTC>)