Python: как получить время UTC с учетом TIMEZONE - PullRequest
2 голосов
/ 30 июня 2011

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

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

Сейчас этот код дает мне время в Гринвиче,Англия.Я знаю, что у меня есть временной сдвиг -8 (GMT -8).Как я могу получить время UTC для определенного часового пояса?(используя библиотеку Python, не переводя час в целое число, - 8, а затем преобразовывая его обратно)

Спасибо.

Ответы [ 3 ]

5 голосов
/ 30 июня 2011

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

datetime.datetime.utcnow() + datetime.timedelta(hours=-8)

Кстати, UTC не имеет часовых поясов, это Всемирное координированное время, оно везде одинаковое.

3 голосов
/ 30 июня 2011

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

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

Из модуля времени Python: «Подобно gmtime (), но преобразуется в местное время. Если секунды не указаны или отсутствуют, используется текущее время, возвращаемое функцией time (). Флаг dst устанавливается в 1, когда DST применяется к данному времени.»

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

time.daylight
1 голос
/ 30 июня 2011

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

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

...