Преобразование часового пояса по Гринвичу ДОБАВЛЯЕТ разницу во времени, а не вычитает

Я пытаюсь преобразовать время с помощью этой функции:

import pytz
from datetime import datetime

def ConvertTimezone(FromZone, timestring, ToZone):
    print("Start of ConvertTimezone from " + str(FromZone) + " " + timestring + " to " + str(ToZone))
    TFORMAT = "%Y %m %d %H:%M"
    ftz = pytz.timezone(FromZone)
    ttz = pytz.timezone(ToZone)
    dt_str = datetime.strptime(timestring, TFORMAT)
    dt_obj_ftz = ftz.localize(dt_str) #localising accounts for daylight savings          
    totime = dt_obj_ftz.astimezone(ttz)
    return totime.strftime(TFORMAT)

print(ConvertTimezone("Etc/GMT+10", "2020 08 30 12:00", "Etc/GMT-12"))

Я ожидаю, что результат будет

"2020 08 29 14:00" # the day before

но вместо этого я получаю это, как будто он ДОБАВИЛ разницу в часовом поясе (22 часа), а не вычел ее:

"2020 08 31 10:00" # the day after

Предполагается, что пользователи могут использовать любой из часовых поясов в pytz.all_timezones. Что я должен сделать, чтобы это сработало?


person FacesOfMu    schedule 25.08.2020    source источник
comment
Обратите внимание: по возможности следует отдавать предпочтение местным часовым поясам (например, Australia/Melbourne). Зоны Etc/GMT±X обычно используются для кораблей в море.   -  person Matt Johnson-Pint    schedule 26.08.2020


Ответы (1)


Нашел результат здесь: Печать даты и времени как pytz.timezone ( Etc/GMT-5) дает неверный результат Очевидно, плюсы и минусы в часовых поясах pytz Etc/GMT по какой-то причине перевернуты.

person FacesOfMu    schedule 25.08.2020
comment
Привет. Я закрыл ваш вопрос как дубликат предоставленной вами ссылки и другой. (Вопрос хороший, но на него уже был дан ответ.) Вы должны удалить этот ответ, так как ответы только со ссылками не приветствуются. Спасибо. - person Matt Johnson-Pint; 26.08.2020