Используйте Python, чтобы узнать, существует ли часовой пояс в летнее время

У нас есть сервер, который работает в GMT. Мне нужно написать сценарий Python, который определяет, является ли это в настоящее время (в эту самую секунду) летнее время (DST) в Лос-Анджелесе, Калифорния. Как я могу это сделать? Я взглянул на pytz и время, но я не могу понять это. Я понимаю, что я мог бы создать некоторую логику, такую ​​как сравнение текущего времени в LA с GMT, но было бы намного более чистым, если бы я мог использовать стандартную библиотеку.

благодаря

Редактирование: Вот пример кода, который настраивает часовой пояс:

from pytz import timezone import pytz from datetime import datetime, timedelta tz = timezone('America/Los_Angeles') // Instantiate a datetime object using tz? 

Изменить: Вот фрагмент кода, который будет работать. Это не изящно, поэтому я спрашиваю, есть ли библиотека или что-то, что сделано для этого. Может быть, как функция is_dst ().

 utc = timezone("UTC") now = utc.localize(datetime.utcnow()) los_angeles_tz = timezone('America/Los_Angeles') los_angeles_time = now.astimezone(los_angeles_tz) delta = los_angeles_time.utcoffset() dstDelta = timedelta(hours=-8) is_dst = (delta == dstDelta) 

2 Solutions collect form web for “Используйте Python, чтобы узнать, существует ли часовой пояс в летнее время”

 import pytz from datetime import datetime, timedelta def is_dst(zonename): tz = pytz.timezone(zonename) now = pytz.utc.localize(datetime.utcnow()) return now.astimezone(tz).dst() != timedelta(0) 

Применение:

 >>> is_dst("America/Los_Angeles") False >>> is_dst("America/Sao_Paulo") True 
 from datetime import datetime import pytz isdst_now_in = lambda zonename: bool(datetime.now(pytz.timezone(zonename)).dst()) 

Пример:

 >>> isdst_now_in("America/Los_Angeles") # 2014-10-27 12:32:07 PDT-0700 True >>> isdst_now_in("Australia/Melbourne") # 2014-10-28 06:32:07 AEDT+1100 True 

Вот только версия time.tzset() Unix, использующая time.tzset() :

 import os import time from contextlib import contextmanager @contextmanager def local_timezone(zonename): #NOTE: it manipulates global state oldname = os.environ.get('TZ') try: os.environ['TZ'] = zonename time.tzset() yield finally: if oldname is None: del os.environ['TZ'] else: os.environ['TZ'] = oldname time.tzset() def time_isdst_now_in(zonename): with local_timezone(zonename): return time.localtime().tm_isdst > 0 

Использование одного и того же:

 >>> time_isdst_now_in('Europe/London') # 2014-04-17 18:42:11 BST+0100 True 

Примечание: time.daylight не используется из-за проблем в некоторых случаях .

  • Как определить, когда DST запускается или заканчивается в определенном месте на Python?
  • неожиданные результаты, преобразующие таймеры в python
  • Как получить объект tz_info, соответствующий текущему часовому поясу?
  • Как хранить наивное datetime в Django 1.4
  • Как найти отметку времени Unix на следующий день за тот же час, включая DST, в Python?
  • Как выполнить команду в точное время раз в день в Django?
  • Не удалось найти версию, удовлетворяющую требованию pytz
  • Python pytz: несуществующее время получает AmbiguousTimeError, а не NonExistentTimeError
  • Python - лучший язык программирования в мире.