1

我主要在我的工作场所使用 Delphi,在一些涉及比较日期时间的彻底单元测试中,我发现在比较计算日期等时,使用equals运算符的直接比较不够可靠。因此,作为一项规则,我开始使用CompareDateTimeSameDateTime,它们是Delphi 中用于日期比较的内置函数。

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

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

4

2 回答 2

4

鉴于您的日期/时间是计算出来的,您最好计算给您一个TimeSpan.

TimeSpan travelTime = arrival - departure;

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

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

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

于 2011-01-22T11:59:38.490 回答
1

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

如果您想了解更多关于TimeSpanChrisF 提到的方法,请参见此处

于 2011-01-22T12:01:31.697 回答