在我的Django项目中,我有一个 (forms.py) 表单,它实现pytz以获取当前时区:
tz = timezone.get_current_timezone()
我已将此值传递给表单字段作为初始值,如下所示:
timezone = forms.CharField(label='Time Zone', initial=tznow)
为该字段提供当前时区的默认值,在我的情况下,它恰好是 Asia / Calcutta 。
现在我想查找给定时区的UTC偏移值,在这种情况下,亚洲/加尔各答 +5:30
我也试过了tzinfo()方法,但我找不到预期的结果。有人可以指导我完成这个吗?
答案 0 :(得分:3)
UTC偏移量由tzinfo的任何实现(如pytz)的utcoffset方法以timedelta给出。例如:
import pytz
import datetime
tz = pytz.timezone('Asia/Calcutta')
dt = datetime.datetime.utcnow()
offset_seconds = tz.utcoffset(dt).seconds
offset_hours = offset_seconds / 3600.0
print "{:+d}:{:02d}".format(int(offset_hours), int((offset_hours % 1) * 60))
# +5:30
答案 1 :(得分:3)
单个时区(例如null
)在不同日期可能会有不同的utc偏移量。在这种情况下,您可以使用Asia/Calcutta
的{{1}}枚举目前已知的utc偏移量:
pytz
获取给定时区的当前utc偏移量:
_tzinfos
答案 2 :(得分:0)
如果您只想要归一化的小时偏移量:
def curr_calcutta_offset():
tz_calcutta = pytz.timezone('Asia/Calcutta')
offset = tz_calcutta.utcoffset(datetime.utcnow())
offset_seconds = (offset.days * 86400) + offset.seconds
offset_hours = offset_seconds / 3600
return offset_hours
curr_calcutta_offset()
# 5.5