【发布时间】:2019-05-05 09:21:22
【问题描述】:
我有一段代码使用datetime、pytz 和re 来确定给定时区的UTC 偏移量,形式为datetime.timedelta 对象:
def get_utcoffset(mic, date):
that_day = datetime.datetime.combine(date, datetime.time())
tzone = pytz.timezone(timezones[mic]) # e.g. pytz.timezone("Asia/Tokyo")
offset_string = tzone.localize(that_day).strftime("%z")
pattern = "^(.)(\\d{2})(\\d{2})$"
captured = re.search(pattern, offset_string)
sign = captured.group(1)
hh = int(captured.group(2))
mm = int(captured.group(3))
if sign == "-":
return datetime.timedelta(hours=-hh, minutes=-mm)
return datetime.timedelta(hours=hh, minutes=mm)
看起来应该有一种更优雅、更有效的方法来做到这一点,因为pytz.timezone.localize 必须知道它自己相对于 UTC 的偏移量。将偏移值提取为字符串然后使用正则表达式基本上对字符串进行 sscanf 似乎很浪费。
我们怎样才能使这段代码更好?
【问题讨论】: