Pytz: Почему нормализация необходима при переходе между часовыми поясами?

Я читаю не совсем полную документацию pytz, и я застрял в понимании одной ее части.

Преобразование между часовыми поясами также требует особого внимания. Это также необходимо использовать метод нормализации для обеспечения правильности преобразования.

>>> utc_dt = utc.localize(datetime.utcfromtimestamp(1143408899))
>>> utc_dt.strftime(fmt)
'2006-03-26 21:34:59 UTC+0000'
>>> au_tz = timezone('Australia/Sydney')
>>> au_dt = au_tz.normalize(utc_dt.astimezone(au_tz))
>>> au_dt.strftime(fmt)
'2006-03-27 08:34:59 EST+1100'
>>> utc_dt2 = utc.normalize(au_dt.astimezone(utc))
>>> utc_dt2.strftime(fmt)
'2006-03-26 21:34:59 UTC+0000'

Я пробовал этот пример без использования normalize, и все получилось так же. На мой взгляд, этот пример на самом деле не объясняет, почему мы должны использовать normalize при преобразовании объектов datetime в разные часовые пояса.

Кто-нибудь, пожалуйста, дайте мне пример (например, выше), где результат отличается тем, что не используется normalize.

Спасибо

Ответ 1

Из документации pytz:

Кроме того, если вы выполняете арифметику даты в локальные времена, пересекающие границы DST, результаты могут быть в неправильном часовом поясе (т.е. вычесть 1 минуту из 2002-10-27 1:00 EST и вы получите 2002-10- 27 0:59 EST вместо правильного 2002-10-27 1:59 EDT). Для этого исправлен метод normalize(). К сожалению, эти проблемы не могут быть решены без изменения реализации даты и времени Python.

Ответ 2

В документах говорится, что normalize используется в качестве обходного пути для проблем DST:

Кроме того, если вы выполняете арифметику даты в локальные времена, пересекающие границы DST, результаты могут быть в неправильном часовом поясе (т.е. вычесть 1 минуту из 2002-10-27 1:00 EST и вы получите 2002-10- 27 0:59 EST вместо правильного 2002-10-27 1:59 EDT). Для этого исправлен метод normalize().

Таким образом, он использовал для исправления некоторых случаев краев, связанных с DST. Если вы не используете временные интервалы времени DST (например, UTC), тогда нет необходимости использовать нормализацию.

Если вы не используете его, ваше преобразование может быть в течение одного часа выключено при определенных обстоятельствах.