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

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

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

>>> 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 .

благодаря

2 Solutions collect form web for “pytz: Почему нормализация необходима при переходе между часовыми поясами?”

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

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

Документы говорят, что нормализация используется в качестве обходного пути для вопросов 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), нет необходимости использовать нормализацию.

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

  • pytz.timezone показывает странные результаты для Азии / Калькутты?
  • pytz: вернуть Olson Название часового пояса только от GMT GMT
  • Сравнение времени в UTC со временем в восточном времени с использованием Python
  • Сохранение даты и времени в Django, основанный на часовом поясе объекта
  • datetime и timezone с pytz-mind blowing behavior
  • Как вы конвертируете наивное datetime в DAT-время datetime в Python?
  • преобразование из локального в utc
  • datetime с часовым поясом pytz. Различное смещение в зависимости от того, как устанавливается tzinfo
  • Python - лучший язык программирования в мире.