Python: как получить UTC время заданного часового пояса


Я нахожусь в США и хочу получить время UTC (без эффекта летнего времени) для фрагмента кода:

localtime = strftime("%m%d%y%H%M", gmtime())
Прямо сейчас этот код дает мне время в Гринвиче, Англия. Я знаю, что у меня есть смещение по времени -8 (GMT -8). Как я могу получить время UTC для определенного часового пояса? (используя библиотеку Python, не приводя час к целому числу, - 8, а затем преобразовать его обратно)

Спасибо.

3 2

3 ответа:

Попробуйте модуль datetime:

datetime.datetime.utcnow() + datetime.timedelta(hours=-8)
Кстати, UTC не имеет часовых поясов, это универсальное координированное время, оно везде одинаковое.

Просто используйте функцию localtime (), а не gmtime ():

localtime = time.strftime("%m%d%y%H%M", time.localtime())

Из модуля python time: "Как gmtime (), но преобразуется в местное время. Если значение secs не указано или отсутствует, используется текущее время, возвращаемое функцией time (). Флаг перехода на летнее время устанавливается в 1, когда ДСТ применяется в данное время."

Чтобы узнать, применяется ли DST:

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

Для этой цели существует полезный сторонний модуль: http://pytz.sourceforge.net/