我有大量的日期时间。例如:
[2013-06-17 19:47:12,
2013-06-17 19:40:01,
2013-06-17 19:42:53,
2013-06-17 19:12:27,
2013-06-17 19:45:42,
2013-06-17 19:14:17]... etc
我想做的是遍历数组并为 DateTime 对象提供一堆范围,这些范围彼此相距 5 分钟。
所以,我会得到的结果是:
[
{range_start: 2013-06-17 19:40:01, range_end: 2013-06-17 19:47:12},
{range_start: 2013-06-17 19:12:27, range_end: 2013-06-17 19:14:17},
]
如您所见,结果集中的第一个对象将包含上例中的所有 4 个 DateTime 对象,方法是获取最早时间和最晚时间并设置范围。对于第二个也是如此。
基本上,我想要做的是将彼此相距 5 分钟以内的 DateTime 组合在一起,但是我不确定如何在没有过度递归的情况下做到这一点。例如,一旦我抓住第一个 DateTime 并找到另一个在 5 分钟内的 DateTime,然后我需要找到在最近找到的 DateTime 5 分钟内的所有其他 DateTime 项。
- 从第 42 分钟开始
- 搜索前后 5 分钟
- 在第 44 分钟找到另一个 DateTime,所以现在范围是 42-44
- 需要在 42-44 范围之前和之后搜索 5 分钟(所以从 38 到 49)
- 如果我在第 49 分钟找到了一些东西,那么范围将变为 42-49
- 现在搜索半径是 38 到 54,等等...