2010-10-28 18 views
0

J'ai un tas d'événements avec des valeurs (combien de personnes ont traversé une porte). Chaque événement est associé à une date. Il n'y a pas de période fixe pour les événements. Si personne ne franchit la porte, aucun événement n'est généré, mais souvent plusieurs personnes peuvent passer à la fois, donc la valeur peut être supérieure à un.moyennage des valeurs d'événements associés à des valeurs de date par heure, jour, etc

Parfois, des événements sont quelques minutes d'intervalle pendant un certain temps, parfois il y a des lacunes de quelques heures,

Utilisation de la classe Date, est-il un moyen facile de mes valeurs en moyenne sur des périodes de temps?

+0

Comment ces données sont-stockées ou récupérées? Note latérale: si elle n'est pas stockée dans une base de données ou dans un fichier plat, vous perdrez toutes les données si l'application/le processus de suivi a été arrêté. D'une certaine manière, j'ai l'impression que vous le savez déjà, mais juste au cas où. –

+0

Voulez-vous connaître le nombre moyen de personnes qui sont passées par période de temps? – dbasnett

+0

les données sont sauvegardées dans un fichier csv. – michael

Répondre

0

Quelque chose comme ça?

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 

ou si vous cherchez le 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