python - 判断时间戳是否在 TimeDelta 列表范围内的 Python 函数
问题描述
我想编写一个下面的函数,它将检查 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:55,那么它在 A 部分的范围内。该函数将返回 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)
推荐阅读
- javascript - 显示 Google Cloud Speech-to-Text
- javascript - 使用 jest 和 react-testing-library 编写测试以检查本地 setState 调用
- python - 我不断收到 Django OAuth Toolkit 的 403 错误
- powerbi - Power BI V2 - 审核或使用指标
- javascript - React - 将从 API 获取的数据作为道具传递给组件
- .net - 打印默认凭据
- hive - 为特定会话设置 HBase 属性
- mysql - 根据轨道索引有条件地渲染歌词?
- c# - 从另一个类调用方法时出现语法错误
- node.js - 将node js项目推送到heroku时出错