I wonder how to compare two DateTime objects in .NET using DateTime methods Compare
, CompareTo
or Equals
without comparing ticks.
I only need a tolerance level of milliseconds or seconds.
How can this be done?
You can subtract one DateTime
from another to produce a TimeSpan
that represents the time-difference between them. You can then test if the absolute value of this span is within your desired tolerance.
bool dtsWithinASecOfEachOther = d1.Subtract(d2).Duration() <= TimeSpan.FromSeconds(1);
The call to TimeSpan.Duration()
can be omitted if you know that the first DateTime
cannot represent an earlier point in time than the other, i.e. d1 >= d2
.
To answer your query about the comparison methods,
DateTime.Compare(d1, d2)
produces the same result as d1.CompareTo(d2)
:
d1.Equals(d2)
, d1 == d2
). Do note though, that the resolution of DateTime is 1 tick = 100 nanoseconds = 10 ^ -7 seconds.d1 > d2
)d1 < d2
)You could convert both DateTimes to string and compare the resulting strings. Make sure you define the string format to avoid problems on machines with different regional settings than yours.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With