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

如何在Python中基于起止日期构建无重叠动态间隔时间戳范围

多线程API调用参数生成问题

需求说明

  • 开发多线程API调用功能,需传入起始时间戳first和周期数。例如参数('2022-09-05 10:00:00.000000', 7)表示从10:00开始拉取7小时数据(到17:00但不包含该时间)。
  • API始终会评估完整周期,即使起始时间不处于周期起点,也会取用包含该时间的完整周期数据。
  • 最终需生成一组元组参数列表,无重叠且完整覆盖指定起止时间戳范围,不能有重复、重叠或多余时长。

初始实现代码

from datetime import date, datetime, timedelta

def build_params(start, end, delta, num):
    pattern = "%Y-%m-%d %H:%M:%S.%f"
    start_dt = datetime.strptime(start, pattern)
    end_dt = datetime.strptime(end, pattern)
    curr = start_dt
    l = []
    while curr <= end_dt:
        l.append((datetime.strftime(curr, pattern), num))
        curr += delta
    return l

存在的问题

该函数无法正确计算列表最后一项的周期数num,未处理起止时间戳与周期数之间的边界细节。

测试用例

# 测试场景1
start = "2022-09-05 10:00:00.000000"
end = "2022-09-06 16:00:00.000000"

# 测试场景2
start = "2022-09-05 10:00:00.000000"
end = "2022-09-06 16:59:59.999999"

# 测试场景3
start = "2022-09-05 10:59:59.999999"
end = "2022-09-06 16:00:00.000000"

num = 7
delta = timedelta(hours=num)
l = build_params(start, end, delta, num)
for i in l:
    print(i)

尝试的改进代码(仍有错误)

from datetime import date, datetime, timedelta
import math

def build_params(start, end, delta, num):
    pattern = "%Y-%m-%d %H:%M:%S.%f"
    start_dt = datetime.strptime(start, pattern)
    end_dt = datetime.strptime(end, pattern)
    curr = start_dt
    l = []
    while curr <= end_dt:
        future = curr + delta
        if future > end_dt:
            diff = end_dt - curr
            diff_hours = diff.total_seconds()/3600
            num = math.ceil(diff_hours)
        l.append((datetime.strftime(curr, pattern), num))
        curr += delta
    return l

期望正确输出示例

以测试场景1为例,期望输出如下:

('2022-09-05 10:00:00.000000', 7)
('2022-09-05 17:00:00.000000', 7)
('2022-09-06 00:00:00.000000', 7)
('2022-09-06 07:00:00.000000', 7)
('2022-09-06 14:00:00.000000', 3)

该逻辑需适配所有num、start和end时间戳组合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 03:50:26