Python判断时间戳是否在TimeDelta列表范围内的函数

Python function to tell whether a timestamp is within the range of list of TimeDelta

我想写一个下面的函数,它将检查 current_time 是否在任何部分内:A 或 B 或 C。在每个部分中,都有一个开始和结束时间。

is_in_market_hours(current_time: timestamp, open_hours:List[Tuple[Timedelta, Timedelta]]):
    pass 

A: Timedelta('0 days 09:00:00'), Timedelta('0 days 11:00:00')
B: Timedelta('0 days 13:00:00'), Timedelta('0 days 15:00:00')
C: Timedelta('0 days 22:00:00'), Timedelta('0 days 23:00:00')

例如,如果 current_time 是 9:15:55am,则它在 A 部分的范围内。该函数将 return True.

我想我需要使用 current_time 来获取当前日期的开始,然后在每个部分中添加 Timedelta。然后我需要一个循环来遍历所有要比较的元组。

我走在正确的轨道上吗?

使用 any() 的简单解决方案

   from datetime import datetime, time

   def is_in_market_hours(current_time, *time_ranges):
       return any(current_time > t[0] and current_time < t[1] for t in time_ranges)

   now = datetime.now().time()

   A = (time(9, 0), time(11, 0))
   B = (time(13, 0), time(15, 0))
   C = (time(22, 0), time(23, 0))

   is_in_market_hours(now, A, B, C)