将时间分组X分钟,以X分钟间隔分组

时间:2013-06-25 04:25:13

标签: c# .net

我有一个对象列表,我需要分组成5分钟的块,分开5分钟翻转,即0,5,10,15,20,25分钟等等。

取这个时间列表(dd / MM / yyyy hh:mm)例如:

01/01/2000 17:00
01/01/2000 17:07
01/01/2000 17:08
01/01/2000 17:09
01/01/2000 17:10
01/01/2000 17:11
01/01/2000 17:12
05/05/2012 10:45
05/05/2012 10:46

我需要这个回复:

01/01/2000 17:00
----------------
01/01/2000 17:07
01/01/2000 17:08
01/01/2000 17:09
01/01/2000 17:10
----------------
01/01/2000 17:11
01/01/2000 17:12
----------------
05/05/2012 10:45
----------------
05/05/2012 10:46

2 个答案:

答案 0 :(得分:4)

您可以在LINQ中使用GroupBy:

 times.GroupBy(y => (int)(y.Ticks / TimeSpan.TicksPerMinute / 5))

只需将每个DateTime减少到相应的编号为5分钟的时间间隔,然后将它所代表的总分钟数除以5。

答案 1 :(得分:0)

从概念上讲,我会先按日期分组,然后遍历所有日期组并将不同的条目放入5分钟的时间段。时间桶也许可以实现为您添加到

的预定义Dictionary<int,List<DateTime>>