私は DateTimes の大きな配列を持っています。例えば:
[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
私がやりたいことは、配列を反復処理して、互いに 5 分以内にある DateTime オブジェクトの一連の範囲を考え出すことです。
したがって、私が得る結果は次のとおりです。
[
{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 オブジェクトがすべて含まれ、最も早い時刻と最も遅い時刻が取得され、範囲が作成されます。2番目についても同様です。
基本的に、私がやろうとしているのは、互いに 5 分以内の DateTimes をグループ化することですが、過度の再帰なしでそれを行う方法がわかりません。たとえば、最初の DateTime を取得し、それから 5 分以内にある別の DateTime アイテムを見つけたら、最近見つけた DateTime から 5 分以内にある他のすべての DateTime アイテムを見つける必要があります。
- 42分開始
- 前後5分で検索
- 44 分で別の DateTime を見つけるため、範囲は 42 ~ 44 になります。
- 42 ~ 44 の範囲の前後 5 分 (つまり、38 ~ 49 の範囲) を検索する必要があります。
- 49 分に何かを見つけた場合、範囲は 42 ~ 49 になります
- 現在、検索範囲は 38 ~ 54 などです...