我主要在我的工作场所使用Delphi,并且在一些彻底的单元测试中涉及比较日期时间,我发现使用等于运算符的直接比较在比较计算的日期等时不够可靠。所以我开始使用CompareDateTime和SameDateTime的规则,这些规则是在Delphi中进行日期比较的函数中构建的。
在习惯用力的C#中,我使用标准运算符=<>
比较日期/时间。我们有类似的函数,如DateTime.Compare和DateTime.Equals,用于日期时间比较,因此在准确性方面和我应该真的使用内置函数吗?
他们会使用运营商给我一个更准确的比较吗?
答案 0 :(得分:4)
鉴于你的日期/时间是计算出来的,你最好不要计算给出TimeSpan
的时间之间的差异。
TimeSpan travelTime = arrival - departure;
然后,您可以检查这是否小于允许的容差。
if (Math.Abs(travelTime.TotalMilliseconds) < tolerance)
{
// times are equal.
}
这类似于浮点值需要采用的方法,但与此无关,因为在这种情况下,不准确性源于您的数据而不是它在内存中的表示方式。
答案 1 :(得分:1)
我不太确定,但是我的一位同事告诉我要始终使用Equals算子。对于DateTime对象,Equals
和Compare
正在比较刻度。
如果您想进一步了解ChrisF提到的TimeSpan
方法,请参阅here。