2010-10-28 4 views
0

У меня есть куча событий со значениями (сколько людей прошли через дверной проем). Каждое событие связано с датой. Для событий не существует фиксированного периода. Если никто не приходит через дверь, событие не генерируется, но часто несколько человек могут пройти через один раз, поэтому значение может быть больше одного.значения среднего значения, связанные с значениями даты по часам, дням и т. Д.

Иногда событие минуты друг от друга на некоторое время, иногда есть пробела несколько часов,

Использование класса Date, есть простой способ усреднения моих ценностей в течение периода времени?

+0

Как эти данные хранятся или получены? Сторона примечания: если она не хранится в базе данных или в каком-либо плоском файле, вы потеряете все данные, если приложение/процесс отслеживания будет прекращено. Каким-то образом я чувствую, что вы уже это знаете, но на всякий случай. –

+0

Хотите узнать среднее число людей, прошедших через определенный промежуток времени? – dbasnett

+0

данные сбрасываются в файл csv. – michael

ответ

0

Что-то вроде этого?

Private Function getAverageDate(ByVal allDates As List(Of Date)) As Date 
    If Not allDates Is Nothing AndAlso allDates.Count <> 0 Then 
     Dim total As Int64 
     For Each d As Date In allDates 
      total += d.Ticks 
     Next 
     Return New Date(System.Convert.ToInt64(total/allDates.Count)) 
    Else 
     Return Date.MinValue 
    End If 
End Function 

или если ваш ищет TimeSpan:

Private Function getAveragePeriod(ByVal allPeriods As List(Of TimeSpan)) As TimeSpan 
    If Not allPeriods Is Nothing AndAlso allPeriods.Count <> 0 Then 
     Dim total As Int64 
     For Each ts As TimeSpan In allPeriods 
      total += ts.Ticks 
     Next 
     Return TimeSpan.FromTicks(System.Convert.ToInt64(total/allPeriods.Count)) 
    Else 
     Return TimeSpan.Zero 
    End If 
End Function