Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Ignore milliseconds when comparing two datetimes

This is probably a dumb question, but I cannot seem to figure it out. I am comparing the LastWriteTime of two files, however it is always failing because the file I downloaded off the net always has milliseconds set at 0, and my original file has an actual value. Is there a simple way to ignore the milliseconds when comparing?

Here's my function:

//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; } 

Thanks in advance

like image 924
Eros Nikolli Avatar asked Aug 11 '11 15:08

Eros Nikolli


People also ask

How do you compare two dates in milliseconds?

Compare date in milliseconds by using getTime() method. compareTo() method can be use to compare two dates in Java.


2 Answers

I recommend you use an extension method:

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

then its just:

if (dtOrig.TrimMilliseconds() == dtNew.TrimMilliseconds()) 
like image 119
Dean Chalk Avatar answered Sep 27 '22 15:09

Dean Chalk


Care should be taken, if dt has non-zero microseconds (fractions of millis). Setting only milliseconds to zero is not enough.
To set millis and below to zero (and get a succesfull comparison), the code would be:

dt = dt.AddTicks(-dt.Ticks % TimeSpan.TicksPerSecond); // TimeSpan.TicksPerSecond=10000000 
like image 27
Peter Ivan Avatar answered Sep 27 '22 15:09

Peter Ivan