Python生成指定时间范围内对齐的10分钟间隔区间起止时间列表
实现方案
核心逻辑为先对输入的起止时间做10分钟粒度的向下对齐,再生成时间序列,完整实现代码如下:
import pandas as pd # 输入的起止时间 start_time = '2020-09-02 17:33:04.472' end_time = '2020-09-02 20:19:14.859' # 转换为datetime类型并向下对齐到10分钟粒度 start_aligned = pd.to_datetime(start_time).floor('10T') end_aligned = pd.to_datetime(end_time).floor('10T') # 生成所有区间起始时间序列 start_times = pd.date_range(start=start_aligned, end=end_aligned + pd.Timedelta(minutes=10), freq='10T') # 保留7点到22点的过滤逻辑(不需要可删除.between_time这一步) start_times_list = start_times.to_series().between_time('07:00','22:00').dt.strftime('%Y-%m-%d %H:%M:%S').tolist() # 区间结束时间为对应起始时间加10分钟 end_times_list = (start_times + pd.Timedelta(minutes=10)).strftime('%Y-%m-%d %H:%M:%S').tolist()
关键逻辑说明
floor('10T')是pandas提供的时间向下取整方法,会自动把分钟部分对齐到最近的小于等于当前值的10的整数倍,秒和毫秒部分清零,刚好符合对齐要求- 生成起始时间序列时结束时间加了10分钟,是因为原始结束时间向下对齐后是20:10,要覆盖到20:20这个起始点,需要把date_range的结束阈值往后延10分钟
- 结束时间列表直接通过起始时间序列统一加10分钟生成,不需要重复计算,保证相邻区间完全衔接没有空隙
内容的提问来源于stack exchange,提问作者Saketh Garuda
相关产品推荐
相关产品推荐

