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

如何用Python实现24小时制下符合休息要求的小时范围计算逻辑?

Python实现符合条件的休息时间计算

我们需要筛选出班次时间段内,满足距离开始时间至少3小时且距离结束时间至少3小时的所有整点小时数。班次分为两种情况:正常当日班次(开始早于结束)和跨天班次(开始晚于结束),以下是对应的实现代码:

def get_break_hours(start, end):
    break_hours = []
    if start < end:
        # 非跨天班次:休息时间需落在 [start+3, end-3] 区间内
        window_start = start + 3
        window_end = end - 3
        if window_start <= window_end:
            break_hours = list(range(window_start, window_end + 1))
    else:
        # 跨天班次:分两段处理,当日的 [start+3, 23] 和次日的 [0, end-3]
        # 处理当日部分
        evening_start = start + 3
        if evening_start <= 23:
            break_hours.extend(range(evening_start, 24))
        # 处理次日部分
        morning_end = end - 3
        if morning_end >= 0:
            break_hours.extend(range(0, morning_end + 1))
    return break_hours

# 验证示例
print(get_break_hours(17, 3))  # 输出: [20, 21, 22, 23, 0]
print(get_break_hours(7, 19))  # 输出: [10, 11, 12, 13, 14, 15, 16]

代码说明

  • 非跨天场景:直接计算start+3到end-3的整数区间,只有当起始点不大于终点时,才会生成有效休息时间列表。
  • 跨天场景:拆分为两个时间段处理,先收集当日从start+3到23点的小时数,再收集次日从0点到end-3的小时数,最后合并结果。
  • 额外处理了无效区间的情况(比如当班次时长不足6小时时,会返回空列表,因为无法满足前后各3小时的要求)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 22:20:41