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)
我想写一个下面的函数,它将检查 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)