You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将时区小时偏移量转为整数?解决int与set运算报错问题

解决时区偏移量集合类型无法参与数值运算的问题

你的问题根源在于错误地将hour_offset定义成了集合(set)类型——因为你用了大括号{(utcoff1-utcoff0).total_seconds()/3600},在Python中,单个元素被大括号包裹会被解析为集合,而非普通数值,这就导致后续无法和整数做加法运算。

修复步骤

  1. 移除多余大括号:直接计算偏移量数值,不要用大括号包裹
  2. 转换为整数类型:使用int()将浮点数偏移量转为整数,满足后续数值运算需求

修复后的完整代码

from datetime import datetime
from zoneinfo import ZoneInfo

dt = datetime.now()
tz0, tz1 = "America/Los_Angeles", "Europe/London"

utcoff0, utcoff1 = dt.astimezone(ZoneInfo(tz0)).utcoffset(), dt.astimezone(ZoneInfo(tz1)).utcoffset()

print(f"hours offset between {tz0} -> {tz1} timezones: {(utcoff1-utcoff0).total_seconds()/3600}")

# 移除大括号并转为整数
hour_offset = int((utcoff1-utcoff0).total_seconds()/3600)

print(type(hour_offset))
print(hour_offset)

# 现在可以正常执行数值运算
print(1 + hour_offset)

关键说明

  • 大括号{}在Python中用于创建集合或字典,若要包裹表达式,只需用小括号()即可(甚至这里小括号都可以省略)
  • (utcoff1-utcoff0).total_seconds()/3600得到的是浮点数类型的小时偏移量,用int()转换后会直接截断小数部分(比如8.0转成8,若遇到8.9也会转成8);如果需要四舍五入,可以改用round()函数

内容的提问来源于stack exchange,提问作者TriggerThumb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 21:08:22