Comparaison de date

Résolu
PWM63 Messages postés 127 Date d'inscription lundi 11 octobre 2004 Statut Membre Dernière intervention 18 mai 2016 - Modifié par PWM63 le 24/09/2015 à 16:24
PWM63 Messages postés 127 Date d'inscription lundi 11 octobre 2004 Statut Membre Dernière intervention 18 mai 2016 - 24 sept. 2015 à 18:34
Bonjour,

Je cherche à comparer 2 dates, pour cela, j'utilise DateTime.Compare, mais le résultat obtenu n'est pas celui attendu si je m'en réfère à la MSDN.

En effet, j'ai 2 fichiers dont je récupère la date de dernière modification, et dans le cas où les fichiers sont identiques, je dois obtenir 0.

Dans un répertoire test, j'ai 1 fichier dont la date de dernière modification est 24/09/2015 15:01:02.
Dans un répertoire test2, j'ai 1 copie de ce fichier qui a été effectuée via la méthode Io.File.Copy(source, destination) (et non modifié ultérieurement à la copie) et la date de dernière modification est bien la même.

Le code ci-dessous m'affiche ce résultat :
MAJ
Src = c:\test\test1.txt
Date Src = 23/09/2015 16:06:37
Dest = c:\test2\test1.txt
Date Dest = 23/09/2015 16:06:37
Date Compare = 1
Date CompareTo = 1

Or, d'après la MSDN, le résultat devrait être 0.

Bien évidemment, d'après le résultat affiché, je peux mettre 1 pour contourner le problème, sachant que cette solution ne me plait guère, mais je cherche surtout 1 explication.

Pouvez-vous m'aider à comprendre ceci, s'il vous plait, et merci d'avance.

        Dim répertoire_source, répertoire_destination, fichier_destination As String

        répertoire_source = "c:\test"
        répertoire_destination = "c:\test2"

        For Each fichier_source As String In IO.Directory.GetFiles(répertoire_source)

            fichier_destination = répertoire_destination & "\" & fichier_source.Substring(fichier_source.LastIndexOf("\") + 1)

            If IO.File.Exists(fichier_destination) Then

                If IO.File.GetLastWriteTime(fichier_source).CompareTo(IO.File.GetLastWriteTime(fichier_destination)) > 0 Then

                    MsgBox("MAJ" & vbCrLf & "Src = " & fichier_source & vbCrLf & "Date Src = " & IO.File.GetLastWriteTime(fichier_source) & vbCrLf & "Dest = " & fichier_destination & vbCrLf & "Date Dest = " & IO.File.GetLastWriteTime(fichier_destination) & vbCrLf & "Date Compare = " & DateTime.Compare(IO.File.GetLastWriteTime(fichier_source), IO.File.GetLastWriteTime(fichier_destination)) & vbCrLf & "Date CompareTo = " & IO.File.GetLastWriteTime(fichier_source).CompareTo(IO.File.GetLastWriteTime(fichier_destination)))

                End If
            End If
        Next



Edit : VB .Net 2010 Pro, Win 7 Pro SP1

Edit 2 : J'ai contourné le problème par 1 autre méthode qui me convient 1 peu mieux, même si c'est hummm..., mais ceci dit, je ne suis toujours pas avare d'1 explication au problème d'origine, merci.

'...
        Dim date_source1, date_source2, date_dest1, date_dest2 As DateTime
'...
                date_source1 = IO.File.GetLastWriteTime(fichier_source)
                date_source2 = New DateTime(date_source1.Year, date_source1.Month, date_source1.Day, date_source1.Hour, date_source1.Minute, 0)
                date_dest1 = IO.File.GetLastWriteTime(fichier_destination)
                date_dest2 = New DateTime(date_dest1.Year, date_dest1.Month, date_dest1.Day, date_dest1.Hour, date_dest1.Minute, 0)

                If date_source2.CompareTo(date_dest2) > 0 Then
'...


Stéphane

2 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
24 sept. 2015 à 18:03
1
PWM63 Messages postés 127 Date d'inscription lundi 11 octobre 2004 Statut Membre Dernière intervention 18 mai 2016
24 sept. 2015 à 18:34
Bonjour ucfoutu,

En effet, je n'avais pas lu cette remarque, et il est en effet probable que je sois tombé dans ce cas qui semble je suppose rare si ce n'est exceptionnel.

Bref, si c'est bien ce cas, cela répond à mon interrogation, et en tout cas, je m'en satisferai.

Du coup, on peut dire que j'ai eu de la chance que cela se soit produit pendant mes tests, car, avec la méthode de résolution de ce problème que j'ai "trouvé", au moins, maintenant, ce cas est traité pour toutes les fois, et il faudra même que je m'en souvienne pour toutes les fois où je devrais utiliser les dates de fichier.

Donc, merci ucfoutu, et je mets le post en résolu.
0
Rejoignez-nous