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

Python2.7遍历时间戳列表 用datetime/timedelta计算相邻时间差方法

完整实现方案

1. 前置修正:补全时间转换函数

你原有TS函数缺少返回值,先修正为可用版本:

from datetime import datetime, timedelta

def TS(x): 
    z1 = datetime.strptime(x, '%H:%M:%S')
    z2 = timedelta(hours=z1.hour,minutes=z1.minute,seconds=z1.second)
    return z2

2. 拆分式实现(逻辑清晰,推荐大多数场景)

转换和差值计算拆分,方便单独复用timedelta列表:

# 输入的时间戳列表
ts_str_list = ['23:05:26', '23:05:28', '23:05:30', '23:05:32']

# 第一步:批量转换所有时间字符串为timedelta格式,用列表推导式遍历调用TS函数
td_list = [TS(ts_str) for ts_str in ts_str_list]

# 第二步:循环计算相邻差值,存储两种格式结果
result_list = []
# 循环从倒数第二个元素向前遍历,和后一个元素做差
for i in range(len(td_list)-1, 0, -1):
    diff = td_list[i] - td_list[i-1]
    result_item = {
        'str_format': str(diff),
        'second_format': diff.seconds
    }
    result_list.append(result_item)

结果说明

  • td_list为全量timedelta对象列表,可单独取出做其他运算
  • result_list顺序和要求的计算顺序完全一致:第一个元素为最后两个时间的差值,第二个为倒数第二和倒数第三的差值,以此类推
  • 遍历取值示例:
for item in result_list:
    print item['str_format'], item['second_format']

3. 合并式实现(适合超长时间戳列表,节省内存)

如果不需要留存完整timedelta列表,可以边转换边计算,仅存储前一个时间的计算结果:

ts_str_list = ['23:05:26', '23:05:28', '23:05:30', '23:05:32']
result_list = []
pre_td = None
# 倒序遍历原始字符串列表,边转换边计算
for ts_str in reversed(ts_str_list):
    current_td = TS(ts_str)
    if pre_td is not None:
        diff = pre_td - current_td
        result_list.append({
            'str_format': str(diff),
            'second_format': diff.seconds
        })
    pre_td = current_td

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 10:06:00