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

如何比较时间字符串列表相邻元素,为后序更小的时间加1天?

代码问题分析
  • 问题1:未继承前序处理的日期偏移
    每次循环都重新用原始字符串解析early变量,完全没有用到上一轮已经给后一个时间加过的1天偏移,比如第一轮处理后later是1900-01-02 11:00,第二轮解析time_str[1]得到的early还是1900-01-01 11:00,之前加的日期偏移直接丢失。
  • 问题2:列表元素重复插入
    每轮循环同时插入early和later两个元素,会导致所有中间时间点被重复插入两次,原列表5个元素最终得到8个结果,和预期的5个输出元素不符。
正确实现方案

思路:先处理第一个时间存入结果列表,后续每个时间先解析,再和结果列表的最后一个已处理时间比较,小于就加1天,再存入结果列表即可,全程复用已处理的偏移结果。

from datetime import datetime, timedelta

time_str = ["23:00", "11:00", "1:00", "5:00", "7:00"]
time_date_lst = []

# 先处理第一个元素
prev_time = datetime.strptime(time_str[0], "%H:%M")
time_date_lst.append(prev_time)

for t in time_str[1:]:
    curr_time = datetime.strptime(t, "%H:%M")
    # 和上一个已处理的时间比较
    if curr_time < prev_time:
        curr_time += timedelta(days=1)
    time_date_lst.append(curr_time)
    # 更新上一个时间为当前处理后的时间,继承偏移
    prev_time = curr_time

print(time_date_lst)

运行输出符合预期:

[datetime.datetime(1900, 1, 1, 23, 0), datetime.datetime(1900, 1, 2, 11, 0), datetime.datetime(1900, 1, 3, 1, 0), datetime.datetime(1900, 1, 3, 5, 0), datetime.datetime(1900, 1, 3, 7, 0)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 20:54:04