最可靠的比较日期时间的方法?

时间:2011-01-22 11:52:47

标签: c# datetime reliability date-comparison

我主要在我的工作场所使用Delphi,并且在一些彻底的单元测试中涉及比较日期时间,我发现使用等于运算符的直接比较在比较计算的日期等时不够可靠。所以我开始使用CompareDateTimeSameDateTime的规则,这些规则是在Delphi中进行日期比较的函数中构建的。

在习惯用力的C#中,我使用标准运算符=<>比较日期/时间。我们有类似的函数,如DateTime.CompareDateTime.Equals,用于日期时间比较,因此在准确性方面和我应该真的使用内置函数吗?

他们会使用运营商给我一个更准确的比较吗?

2 个答案:

答案 0 :(得分:4)

鉴于你的日期/时间是计算出来的,你最好不要计算给出TimeSpan的时间之间的差异。

TimeSpan travelTime = arrival - departure;

然后,您可以检查这是否小于允许的容差。

if (Math.Abs(travelTime.TotalMilliseconds) < tolerance)
{
    // times are equal.
}

这类似于浮点值需要采用的方法,但与此无关,因为在这种情况下,不准确性源于您的数据而不是它在内存中的表示方式。

答案 1 :(得分:1)

我不太确定,但是我的一位同事告诉我要始终使用Equals算子。对于DateTime对象,EqualsCompare正在比较刻度。

如果您想进一步了解ChrisF提到的TimeSpan方法,请参阅here