Manipulation de dates (intervalle, Mini, Max, durée etc.)
Bonjour à tous,
Ha cela m’énerve, j'ai vraiment du mal avec la manipulation de date.
Donc j'expose mon souci:
Je dois comparer les données stocké dans un Dictionnaire (Date,Double)
Exemple de données:
Key Donnée
20/10/2011 07:00:00 / 0
20/10/2011 07:10:00 / 0
20/10/2011 07:20:00 / 5
20/10/2011 07:30:00 / 5
20/10/2011 07:40:00 / 6
20/10/2011 07:50:00 / 4
20/10/2011 08:00:00 / 0
20/10/2011 08:10:00 / 0
20/10/2011 08:20:00 / 0
20/10/2011 08:30:00 / 2
20/10/2011 08:40:00 / 2
20/10/2011 08:50:00 / 0
l'exemple n'est qu'un exemple car je peux avoir des données sur plusieurs jour voir années, comparer seulement les minutes ne suffirait pas.
Les données indique une puissance fourni par un groupe électrogène. Lorsqu'elle est à 0 c'est qu'il est arrêté, toutes autres valeur indique qu'il est en fonctionnement.
Je dois récupérer, concernant les dates: (Peut donc être en heures, minutes,jours, mois, années, suivant la taille du fichier)
1) La durée de fonctionnement total.
2) Intervalle minimum entre chaque fonctionnement.
3) Intervalle maximum entre chaque fonctionnement.
4) La moyenne de ces intervalles.
j'ai commencé et je continue après l’écriture de ce post.
C'est pas encore fini, et non fonctionnels , mais je sens que je m'enlise.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| Public Function TempUtilisation(ByVal Liste As Dictionary(Of Date, Double), ByRef DateMin As Date, ByRef DateMax As Date, ByRef DateAver As Date) As Date
Dim OneMesure As Boolean = True
Dim OneDurree As Boolean = True
Dim SaveDateOne As Date
Dim SaveDateTwo As Date
Dim DureeFonctionnement As Date
Dim DureeTotal As Date
Dim Production As Boolean = False
Try
For Each Dt As Date In Liste.Keys
If Liste(Dt) <> 0 Then
If Not Production Then
SaveDateOne = Dt
Production = True
Else
SaveDateTwo = Dt
End If
Else
If Production Then
DureeFonctionnement = Convert.ToDateTime(DateTime.op_Subtraction(SaveDateTwo, SaveDateOne))
If OneMesure Then
DateMin = DureeFonctionnement
DateMax = DureeFonctionnement
OneMesure = False
Else
If DureeFonctionnement < DateMin Then
DateMin = DureeFonctionnement
End If
If DureeFonctionnement > DateMax Then
DateMax = DureeFonctionnement
End If
If OneDurree Then
End If
End If
End If
End If
Next
Return DureeTotal
Catch ex As Exception
Return Nothing
End Try
End Function |