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

Python是否有处理纯时间区间的库?判断给定时间是否命中区间

纯时间区间的命中判断实现

以下是完全基于datetime.time对象的区间判断工具实现,符合你要求的使用方式,无需依赖pandas的timestamp:

实现代码(lib.py)

import datetime

class Interval:
    def __init__(self, **kwargs):
        # 将传入的HH:MM:SS格式字符串解析为datetime.time对象
        self.from_time = datetime.datetime.strptime(kwargs["from"], "%H:%M:%S").time()
        self.till_time = datetime.datetime.strptime(kwargs["till"], "%H:%M:%S").time()

def hits_interval(time: datetime.time, interval: Interval) -> bool:
    from_t = interval.from_time
    till_t = interval.till_time

    if from_t <= till_t:
        # 非跨天区间:判断时间是否在[起始, 结束]范围内
        return from_t <= time <= till_t
    else:
        # 跨天区间:时间大于等于起始 或 小于等于结束
        return time >= from_t or time <= till_t

使用示例

import datetime
import lib

# 定义待判断的纯时间
my_time = datetime.time(hour=7, minute=7, second=7)
# 定义时间区间(01:02:03 到 03:02:01)
my_interval = lib.Interval(from="01:02:03", till="03:02:01")

# 输出判断结果:7:07不在1:02-3:02区间内,所以输出False
print(lib.hits_interval(time=my_time, interval=my_interval))

关键逻辑说明

  • Interval类:通过关键字参数接收from和till时间字符串,自动转换为datetime.time对象存储,避免重复解析。
  • 跨天区间处理:如果区间起始时间晚于结束时间(比如from="23:00:00", till="01:00:00"),会自动判定为跨午夜区间,此时只要时间落在起始到23:59:59,或00:00:00到结束范围内,都会返回True。

跨天区间测试示例

# 定义跨天区间:23:00到次日01:00
cross_interval = lib.Interval(from="23:00:00", till="01:00:00")

test_time1 = datetime.time(23, 30)
print(lib.hits_interval(test_time1, cross_interval))  # 输出True

test_time2 = datetime.time(0, 30)
print(lib.hits_interval(test_time2, cross_interval))  # 输出True

test_time3 = datetime.time(12, 0)
print(lib.hits_interval(test_time3, cross_interval))  # 输出False

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 08:47:37