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

Python如何计算两个时间(含端点)间的秒级连续时间列表

Python按秒拆分两个时间点(含首尾)的实现方案

逐秒累加timedelta是这个场景下最稳妥、可读性最高的实现,不需要刻意追求“奇技淫巧”式的优雅,用原生标准库写出来的简洁逻辑已经足够好用,完全不需要额外引入第三方依赖。

推荐实现

直接在datetime对象层面做时间偏移计算,最后统一格式化输出,避免提前转字符串带来的额外解析开销和格式错误:

from datetime import datetime, timedelta

def get_time_interval(s_time: datetime, e_time: datetime) -> list[str]:
    # 计算两个时间的秒级差值,抹除微秒误差
    seconds_diff = int((e_time - s_time).total_seconds())
    # 列表推导式逐秒生成时间,range(seconds_diff + 1)保证首尾时间都包含
    return [
        (s_time + timedelta(seconds=offset)).strftime("%H:%M:%S")
        for offset in range(seconds_diff + 1)
    ]

# 测试用例
if __name__ == "__main__":
    t1 = datetime(2024, 1, 1, 15, 20, 30)
    t2 = datetime(2024, 1, 1, 15, 20, 33)
    print(get_time_interval(t1, t2))
    # 输出结果:['15:20:30', '15:20:31', '15:20:32', '15:20:33']

实现说明

  • 不要手动拆分时分秒做60进制进位计算,这类手写逻辑非常容易在跨分钟、跨小时、跨天的场景出bug,交给内置的timedelta处理进位是最稳妥的选择
  • 不需要提前把起始、结束时间转成%H:%M:%S格式的字符串,所有计算完成后统一格式化即可,减少不必要的类型转换
  • 这个实现天然支持跨天的时间区间计算,比如起始时间为当日23:59:59、结束时间为次日00:00:01,也能正确返回包含三个时间点的列表
  • 如果你的项目本身已经依赖pandas,可以用pandas.date_range实现,但对于普通业务场景,为了这个功能引入重型第三方依赖完全没有必要,原生实现的性能哪怕应对几小时的时间差(上万条数据)也完全够用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 18:27:41