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 : Sélectionner tout - Visualiser dans une fenêtre à part
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