Comparaison de date [Résolu]

PWM63 127 Messages postés lundi 11 octobre 2004Date d'inscription 18 mai 2016 Dernière intervention - 24 sept. 2015 à 16:09 - Dernière réponse : PWM63 127 Messages postés lundi 11 octobre 2004Date d'inscription 18 mai 2016 Dernière intervention
- 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
Afficher la suite 

2 réponses

Répondre au sujet
ucfoutu 18023 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 19 décembre 2017 Dernière intervention - 24 sept. 2015 à 18:03
+1
Utile
Bonjour,
as-tu lu la remarque faite ici :
https://msdn.microsoft.com/fr-fr/library/system.io.file.getlastwritetime%28v=vs.110%29.aspx
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de ucfoutu
PWM63 127 Messages postés lundi 11 octobre 2004Date d'inscription 18 mai 2016 Dernière intervention - 24 sept. 2015 à 18:34
0
Utile
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.
Commenter la réponse de PWM63

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.