tz.localize () возвращает неправильное смещение - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть следующая функция (с преувеличенными инструкциями регистратора, чтобы помочь с отладкой прямо сейчас), которая берет входной часовой пояс и дату и время и преобразует их в PST:

def convert_to_pst_equivalent_time(input_datetime, input_timezone):
    timezone = pytz.timezone(input_timezone)
    dt_date = input_datetime.split("T")[0]
    dt_time = input_datetime.split("T")[1].split("-")[0] if "-" in input_datetime.split("T")[1] else \
        input_datetime.split("T")[1].split("+")[0]
    dt = datetime.strptime((dt_date + " " + dt_time), "%Y-%m-%d %H:%M:%S")
    logger.info("DT is: {}".format(dt))

    dt = timezone.localize(dt)
    logger.info("DT is now: {}".format(dt))

    dt = dt.astimezone(pytz.timezone("America/Los_Angeles"))
    logger.info("DT is finally: {}".format(dt))

    return dt.strftime("%Y-%m-%dT%H:%M:%S")

Если у нас есть некоторые входные данные, такие как «2020-02-03T00: 00: 00» как «input_datetime» и «Pacific / Norwalk» как input_timezone, мои выводы следующие:

DT is: 2020-02-03 00:00:00
DT is now: 2020-02-03 00:00:00+12:00
DT is finally: 2020-02-02 04:00:00-08:00

Однако, основываясь на этом веб-сайте ( https://www.zeitverschiebung.net/en/difference/timezone/pacific--norfolk/city/5368361), Pacific / Norwalk должен быть +11: 00, а не +12: 00, и поэтому мой окончательный вывод после преобразования в время Лос-Анджелеса также отключен на 1 час. Странно, это работает для других часовых поясов, но этот, в частности, предлагает проблемы. Я пытался сделать что-то вроде замены tzinfo = и localize () (, как видно выше ), но ни один из них не возвращает правильное смещение. Есть идеи?

...