Python中如何对带时区的datetime对象时间部分做累加计算
时区时间与偏移量相加实现方法
你已经获取到带时区的loc_dt对象后,可通过以下代码实现需求:
from datetime import datetime, timedelta import pytz # 原有获取雅加达时区时间的代码 indo = pytz.timezone('Asia/Jakarta') loc_dt = indo.localize(datetime.now()) print(loc_dt) # 输出示例:2021-10-19 04:07:20.871283+07:00 # 核心实现代码 # 方法1:动态读取时区偏移量,适配任意时区场景 time_offset = loc_dt.utcoffset() combined_dt = datetime.combine(datetime.today().date(), loc_dt.time()) result_time = (combined_dt + time_offset).time() # 方法2:固定加7小时,仅适用于当前雅加达时区场景 # result_time = (combined_dt + timedelta(hours=7)).time() # 格式化输出为你需要的字符串格式 print(result_time.strftime("%H:%M:%S.%f")) # 输出:11:07:20.871283
逻辑说明
loc_dt.utcoffset()会自动读取当前时区对应的偏移时长(雅加达时区对应就是7小时的timedelta对象),无需手动硬编码时长,后续更换时区也无需调整代码- 用
datetime.combine将提取出的本地时间部分与任意日期拼接为完整datetime对象,加上偏移时长后再提取时间部分,即可得到相加后的结果 - 最后通过
strftime格式化输出,%f参数用于保留微秒部分,匹配你需要的输出格式。
内容的提问来源于stack exchange,提问作者wahyu
相关产品推荐
相关产品推荐

