python按照数量对时间区间进行切割

需求:

        我有一个时间区间,我想把这个区间内的时间切割为指定个小时,但是这个区间最后一个小时不能超出当天,要保证每个区间都最低一小时,然后每个区间的开始时间不能等于上一个区间的结束时间,中间要空出1秒,结果分别放到列表里

from datetime import datetime, timedelta


def split_time_interval(start_time, end_time, num_hours):
    # 将字符串时间转换为 datetime 对象
    start_datetime = datetime.strptime(start_time, '%Y-%m-%d %H:%M:%S')
    end_datetime = datetime.strptime(end_time, '%Y-%m-%d %H:%M:%S')

    # 计算时间间隔
    time_delta = end_datetime - start_datetime

    # 计算每个小时段的长度
    interval_hours = time_delta / num_hours

    # 切割时间区间
    start_times = []
    end_times = []
    current_time = start_datetime
    for i in range(num_hours):
        next_time = current_time + interval_hours
        if next_time > end_datetime:
            next_time = end_datetime
        else:
            next_time -= timedelta(seconds=1)  # 减去1秒确保与下一个区间有间隔
        start_times.append(current_time.strftime('%Y-%m-%d %H:%M:%S'))
        end_times.append(next_time.strftime('%Y-%m-%d %H:%M:%S'))
        current_time = next_time + timedelta(seconds=1)  # 加上1秒确保与上一个区间有间隔

    return start_times, end_times


start_time = '2024-03-19 00:00:00'
end_time = '2024-03-19 23:59:59'
num_hours = 3

start_times, end_times = split_time_interval(start_time, end_time, num_hours)
result = [[item1, item2] for item1, item2 in zip(start_times, end_times)]
print(result)

运行结果

[['2024-03-19 00:00:00', '2024-03-19 05:59:58'], ['2024-03-19 05:59:59', '2024-03-19 11:59:58'], ['2024-03-19 11:59:59', '2024-03-19 17:59:58'], ['2024-03-19 17:59:59', '2024-03-19 23:59:58']]

该方法为随机切割时间区间,指定区间可以在此方法做修改

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值