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

如何基于日期列表对Python3中的时间列表分组求和并判断时长

按日期分组求和时间并做阈值判断的Python实现

没问题,咱们来一步步解决这个问题——首先要按日期分组计算累计时间,再根据是否达到8小时执行不同操作。这里用基础Python就能实现,核心思路是用字典来存储每个日期对应的总秒数,既方便分组又容易求和:

完整代码示例

Date = ['01-01-2019', '02-01-2019', '02-01-2019']
Time = ['07:00:00', '06:00:00','02:00:00']

# 初始化字典,用于存储每个日期的累计总秒数
date_time_totals = {}

# 遍历配对的日期和时间,计算累计秒数
for date, time_str in zip(Date, Time):
    # 将时间字符串转为总秒数,复用你原有的转换逻辑
    h, m, s = map(int, time_str.split(":"))
    total_seconds = 3600 * h + 60 * m + s
    
    # 更新字典:日期存在则累加,不存在则初始化
    if date in date_time_totals:
        date_time_totals[date] += total_seconds
    else:
        date_time_totals[date] = total_seconds

# 定义8小时对应的秒数阈值(避免字符串比较的潜在问题)
threshold_seconds = 8 * 3600

# 遍历每个日期的累计数据,执行判断和操作
for date, total_sec in date_time_totals.items():
    # 将总秒数格式化为HH:MM:SS字符串
    hours = total_sec // 3600
    minutes = (total_sec // 60) % 60
    seconds = total_sec % 60
    formatted_time = f"{hours:02d}:{minutes:02d}:{seconds:02d}"
    
    # 核心判断逻辑
    if total_sec >= threshold_seconds:
        # 替换成你实际需要执行的操作
        print(f"📅 {date} | 累计时间 {formatted_time} → 达到8小时标准,执行操作A")
    else:
        # 替换成你实际需要执行的操作
        print(f"📅 {date} | 累计时间 {formatted_time} → 未达8小时标准,执行操作B")

代码说明

  • 分组求和:用zip(Date, Time)确保日期和时间一一对应,字典date_time_totals自动完成分组,每个日期对应其所有时间的秒数总和,比手动写多个if判断更简洁高效;
  • 阈值比较:把8小时转换成秒数(28800秒)来比较,比直接比较时间字符串更可靠——比如遇到超过24小时的累计时间(比如25:30:00),字符串比较会出错,但秒数比较完全没问题;
  • 时间格式化:用f-string格式化时间,语法更直观,也支持超过24小时的场景(比如累计30小时会显示30:00:00)。

运行结果

执行代码后会输出:

📅 01-01-2019 | 累计时间 07:00:00 → 未达8小时标准,执行操作B
📅 02-01-2019 | 累计时间 08:00:00 → 达到8小时标准,执行操作A

完全符合你想要的效果,你只需要把print语句替换成实际的业务逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:52:39