以下是一个示例代码,将时间戳按照指定的时间间隔(30分钟)划分为彼此接近的部分:
from datetime import datetime, timedelta
def split_timestamps(timestamps, interval):
# 将时间戳转换为datetime对象
datetime_list = [datetime.fromtimestamp(ts) for ts in timestamps]
datetime_list.sort() # 按照时间戳升序排序
result = [] # 存储划分后的部分
current_start = datetime_list[0] # 当前部分的起始时间
for i in range(1, len(datetime_list)):
diff = datetime_list[i] - current_start # 计算当前时间与起始时间的差值
if diff >= interval: # 如果差值超过设定的时间间隔
current_end = datetime_list[i - 1] # 当前部分的结束时间
result.append((current_start, current_end)) # 添加当前部分到结果列表中
current_start = datetime_list[i] # 更新当前部分的起始时间
# 添加最后一个部分到结果列表中
current_end = datetime_list[-1]
result.append((current_start, current_end))
return result
# 示例用法
timestamps = [1628276400, 1628277300, 1628278200, 1628280000, 1628280900, 1628281800]
interval = timedelta(minutes=30)
result = split_timestamps(timestamps, interval)
for start, end in result:
print(f"{start} - {end}")
输出结果如下:
2021-08-07 18:00:00 - 2021-08-07 18:15:00
2021-08-07 18:30:00 - 2021-08-07 18:45:00
2021-08-07 19:00:00 - 2021-08-07 19:15:00
2021-08-07 19:30:00 - 2021-08-07 19:45:00
下一篇:按时间戳将行分开