2011-01-22 55 views
0

我主要在我的工作場所使用德爾福,並在一些徹底的單元測試中涉及比較日期時間,我發現使用的直接比較等於運算符在比較計算日期等時不夠可靠。因此,通常我開始使用CompareDateTimeSameDateTime它們都是在Delphi中進行日期比較的函數。最可靠的比較日期時間的方法?

在C#中習慣性地使用標準運算符=<>比較日期/時間。我們有類似的功能,如DateTime.CompareDateTime.Equals日期時間比較,因此在精度方面&可靠性應該我真的是使用內置函數嗎?

他們會給我一個更準確的比較,使用運算符?

+0

請注意,如果您減去UTC和本地時間戳,則會扣除原始時間值。 – CodesInChaos 2011-01-22 12:46:23

回答

3

考慮到你的日期/時間的計算,你最好計算一下給出TimeSpan的時間差。

TimeSpan travelTime = arrival - departure; 

然後,您可以檢查這是否小於允許的公差。

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

此類似,您需要承擔浮點值的辦法,但是獨立的,由於在這種情況下,不準確的數據它不是如何在內存中表示莖。

+1

這也是我首先想到的。可以在DateTime中很好地包裝成擴展方法。 – tomfanning 2011-01-22 12:05:24

+0

所以我很困惑的是......爲什麼讓運營商比較,如果他們不可靠的第一個地方?運營商究竟做了什麼與日期時間? – James 2011-01-22 12:07:02

0

我不太確定,但是我的一位同事告訴我要始終使用Equals運算符。對於DateTime對象,EqualsCompare正在比較刻度。

如果您想了解更多關於TimeSpan方法的信息,請參閱here