Это правильный способ преобразования строки даты и времени UTC в местное время? - PullRequest
1 голос
/ 25 марта 2010

Это правильный способ преобразования строки UTC в местное время с учетом перехода на летнее время? Это выглядит нормально для меня, но вы никогда не знаете:)

import time
UTC_STRING = "2010-03-25 02:00:00"
stamp = time.mktime(time.strptime(UTC_STRING,"%Y-%m-%d %H:%M:%S"))
stamp -= time.timezone
now   = time.localtime()
if now[8] == 1:
    stamp += 60*60
elif now[8] == -1:
    stamp -= 60*60
print 'UTC: ', time.gmtime(stamp)
print 'Local: ', time.localtime(stamp)

--- Результаты из Новой Зеландии (GMT + 12 dst = 1) ---

UTC:  (2010, 3, 25, 2, 0, 0, 3, 84, 0)
Local:  (2010, 3, 25, 15, 0, 0, 3, 84, 1)

1 Ответ

5 голосов
/ 25 марта 2010

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

>>> warsaw = pytz.timezone('Europe/Warsaw')
>>> loc_dt1 = warsaw.localize(datetime(1915, 8, 4, 23, 59, 59), is_dst=False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...