Вы не указываете дату при создании объекта jj
datetime, поэтому используется дата по умолчанию 1900-01-01. Часовые пояса не являются фиксированными объектами; они меняются с течением времени, и часовой пояс США / Центральной зоны использовал другое смещение еще в 1900 году.
Как минимум, используйте недавнюю дату, например сегодня , например:
# use today's date, with the time from jj, and a given timezone.
datetime.datetime.combine(datetime.date.today(), jj.time(), tzinfo=tzz)
Если все, что вам нужно, это время , то не создавайте datetime
объекты для их хранения; модуль datetime
имеет выделенный объект time()
. Я бы также не использовал strftime()
для создания объектов из литералов. Просто используйте конструктор для передачи целых чисел:
jj = datetime.time(10, 0, 0) # or just .time(10)
Другие хорошие эмпирические правила: если вам приходится иметь дело с датами с часовыми поясами, попробуйте переместить их в datetime
объекты в UTC в тот момент, когда ваш код получает или загружает их. Если у вас есть только время суток, но вам все еще нужна поддержка часового пояса, прикрепите их к сегодняшней дате, чтобы вы получили правильный часовой пояс. Снова конвертируйте в строки как можно позже.