Получить UTC смещение от имени часового пояса в python
Как я могу получить UTC смещение от имени часового пояса в python?
Например: у меня есть "Азия/Иерусалим", и я хочу получить "+0200"
Ответ 1
Из-за DST (переход на летнее время) результат зависит от времени года:
import datetime, pytz
datetime.datetime.now(pytz.timezone('Asia/Jerusalem')).strftime('%z')
# returns '+0300' (because 'now' they have DST)
pytz.timezone('Asia/Jerusalem').localize(datetime.datetime(2011,1,1)).strftime('%z')
# returns '+0200' (because in January they didn't have DST)
Я столкнулся с подобной проблемой при преобразовании в метку времени UTC из объекта datetime python. Мой datetime был временным агностиком (очень наивным) и как таковой astimezone не работал.
Чтобы смягчить эту проблему, я сделал информацию о часовом поясе объекта datetime, а затем использовал описанную выше магию.