102 votes

Ignorer les millisecondes lors de la comparaison de deux dates-heures

C'est probablement une question idiote, mais je n'arrive pas à comprendre. Je compare le LastWriteTime de deux fichiers, mais il échoue toujours, car le fichier que j'ai téléchargé sur le réseau a toujours des millisecondes définies sur 0 et mon fichier d'origine a une valeur réelle. Existe-t-il un moyen simple d'ignorer les millisecondes lors de la comparaison?

Voici ma fonction:

 //compare file's dates
public bool CompareByModifiedDate(string strOrigFile, string strDownloadedFile)
{
     DateTime dtOrig = File.GetLastWriteTime(strOrigFile);
     DateTime dtNew = File.GetLastWriteTime(strDownloadedFile);

     if (dtOrig == dtNew)
        return true;
     else
        return false;
}
 

Merci d'avance

127voto

Dean Chalk Points 7935

Je vous recommande d'utiliser une méthode d'extension:

 public static DateTime TrimMilliseconds(this DateTime dt)
{
    return new DateTime(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second, 0);
}
 

alors c'est juste:

 if (dtOrig.TrimMilliseconds() == dtNew.TrimMilliseconds())
 

58voto

Peter Ivan Points 609

Des précautions doivent être prises si dt a des microsecondes non nulles (fractions de millis). Définir uniquement les millisecondes à zéro ne suffit pas.
Pour définir les millis et les valeurs inférieures à zéro (et obtenir une comparaison réussie), le code serait:

 dt = dt.AddTicks(-dt.Ticks % 10000000);
 

48voto

dtb Points 104373

Créez une nouvelle valeur DateTime avec le composant millisecondes défini sur 0:

 dt = dt.AddMilliseconds(-dt.Millisecond);
 

34voto

Paul Ruane Points 12840
TimeSpan difference = dtNew - dtOrig;
if (difference >= TimeSpan.FromSeconds(1))
{
    ...
}

18voto

Sanjay Manohar Points 3612

Vous pouvez les soustraire pour obtenir un TimeSpan .

Alors utilisez TimeSpan.totalSeconds()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X