如何在Python中累加日期差值?附数据集及现有减法代码
解决日期差值累加问题
嘿,这事儿不难,咱们直接在你现有代码的基础上调整就行!核心思路就是先初始化一个用来存储总差值的变量,每次算出符合条件的日期差后,把它加到这个变量里就好。
步骤1:初始化累加变量
因为咱们要累加的是datetime.timedelta类型的时间差值,所以得先创建一个空的时间差对象作为初始值:
import datetime total_diff = datetime.timedelta(0) # 初始化为0时长的时间差
步骤2:修改循环代码,加入累加逻辑
另外要注意,你的原循环range(len(y))会导致x+1超出列表索引(当x取到最后一个元素时),所以得把循环范围改成range(len(y)-1),避免触发索引越界错误。然后在打印差值的地方,同时把差值加到total_diff里:
# 先把你的数据集整理成列表(假设原数据存在y里) y = [ (u'x', datetime.datetime(2018, 1, 5, 4, 49, 30)), (u'y', datetime.datetime(2018, 1, 5, 9, 59, 10)), (u'x', datetime.datetime(2018, 1, 13, 10, 23, 17)), (u'y', datetime.datetime(2018, 1, 15, 17, 16, 34)), (u'x', datetime.datetime(2018, 1, 22, 11, 9, 55)), (u'y', datetime.datetime(2018, 1, 22, 14, 24, 59)) ] total_diff = datetime.timedelta(0) for x in range(len(y)-1): # 调整循环范围,防止索引越界 if y[x][0] == 'x' and y[x+1][0] != 'y': diff = y[x+1][1] - y[x][1] print(diff) total_diff += diff # 把当前差值累加到总变量里 # 最后输出所有符合条件的差值总和 print("总累加差值:", total_diff)
补充小提示
datetime.timedelta类型支持直接加减操作,所以累加起来非常省心- 如果后续需要把总差值转换成秒、小时等具体单位,可以用
total_diff.total_seconds()(转成秒)、total_diff.total_seconds()/3600(转成小时)这类方法
内容的提问来源于stack exchange,提问作者Eseresaure
相关产品推荐
相关产品推荐

