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

如何在Python中将上一行结束时间设为下一行开始时间并累加秒数

嗨,这个需求用Python的标准库就能完美解决,我给你准备了两种场景的实现方案,看你是从初始时间开始生成完整时间链,还是处理已有的表格数据~

方案1:从初始时间生成完整时间链

如果你只有初始开始时间和每一行要添加的秒数列表,可以用这个方法直接生成完整的时间表格:

from datetime import datetime, timedelta

def generate_time_table(initial_start_time, time_add_seconds):
    # 把初始时间字符串转成可计算的datetime对象
    current_start = datetime.strptime(initial_start_time, "%H:%M:%S")
    table_rows = []
    
    for secs in time_add_seconds:
        # 计算当前行的结束时间
        current_end = current_start + timedelta(seconds=secs)
        # 把时间转成字符串格式,存入结果
        table_rows.append({
            "start-time": current_start.strftime("%H:%M:%S"),
            "time_to_add": f"{secs} secs",
            "endtime": current_end.strftime("%H:%M:%S")
        })
        # 更新下一行的开始时间为当前行的结束时间
        current_start = current_end
    
    return table_rows

# 测试一下你的示例场景
if __name__ == "__main__":
    initial_time = "10:00:00"
    add_seconds_list = [30, 15, 10]
    result_table = generate_time_table(initial_time, add_seconds_list)
    
    # 打印成清晰的表格格式
    print("start-time|time_to_add|endtime")
    for row in result_table:
        print(f"{row['start-time']} |{row['time_to_add']} |{row['endtime']}")

代码说明

  • 用到了Python自带的datetime和timedelta模块,不用额外安装第三方库
  • strptime负责把字符串格式的时间转成可计算的对象,strftime则把计算后的时间转回字符串
  • timedelta(seconds=secs)专门用来表示“N秒”的时间间隔,直接和datetime对象相加就能得到新的时间
  • 循环里每次计算完当前行的结束时间,就把它设为下一行的开始时间,完美实现你的链式需求

运行这个代码,输出就是你给出的示例结果:

start-time|time_to_add|endtime
10:00:00 |30 secs |10:00:30
10:00:30 |15 secs |10:00:45
10:00:45 |10 secs |10:00:55

方案2:处理已有表格数据(自动填充)

如果你的表格已经有部分数据(比如第一行有开始时间,后续行只有要添加的秒数),可以用这个方法自动补全所有的开始和结束时间:

from datetime import datetime, timedelta

def fill_time_table(existing_table):
    # 先处理第一行,确保结束时间正确
    first_row = existing_table[0]
    start_time = datetime.strptime(first_row["start-time"], "%H:%M:%S")
    # 提取秒数(兼容带"secs"和纯数字的格式)
    add_secs = int(first_row["time_to_add"].replace(" secs", "").strip())
    first_row["endtime"] = (start_time + timedelta(seconds=add_secs)).strftime("%H:%M:%S")
    
    # 处理后续每一行
    for i in range(1, len(existing_table)):
        # 用上一行的结束时间作为当前行的开始时间
        prev_end_time = datetime.strptime(existing_table[i-1]["endtime"], "%H:%M:%S")
        current_add_secs = int(existing_table[i]["time_to_add"].replace(" secs", "").strip())
        current_end_time = prev_end_time + timedelta(seconds=current_add_secs)
        
        # 填充当前行的开始和结束时间
        existing_table[i]["start-time"] = prev_end_time.strftime("%H:%M:%S")
        existing_table[i]["endtime"] = current_end_time.strftime("%H:%M:%S")
    
    return existing_table

# 测试示例
if __name__ == "__main__":
    # 模拟已有表格数据(只有第一行有开始时间,其他行只有要添加的秒数)
    input_table = [
        {"start-time": "10:30:00", "time_to_add": "30", "endtime": ""},
        {"start-time": "", "time_to_add": "30", "endtime": ""},
        {"start-time": "", "time_to_add": "20", "endtime": ""}
    ]
    
    filled_table = fill_time_table(input_table)
    
    print("starttime | val_to_add | endtime")
    for row in filled_table:
        print(f"{row['start-time']} | {row['time_to_add']} | {row['endtime']}")

运行后输出就是你补充的示例效果:

starttime | val_to_add | endtime
10:30:00 | 30 | 10:30:30
10:30:30 | 30 | 10:31:00
10:31:00 | 20 | 10:31:20

额外提示

如果你的表格是从CSV、Excel或者其他文件读取的,只需要把读取到的数据转换成上面示例中的字典列表格式,就能直接套用这个逻辑处理啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 03:58:32