2016-10-06 46 views
2

我有一個奇怪的問題,我試圖理解。 在我的控制器中有2個我想比較的DateTime對象。C#2日期時間不相等

您可以從我的控制器中的調試器中看到屏幕截圖。我創建一個日期時間並從模型中獲取另一個日期時間。 在這個步驟中,您可以在調試器,DATE1來自於date2相差2秒 debuger - step 1

在下一步看到我從date2的去除2秒鐘,它與DATE1

debugger 2

礁你解釋比較我爲什麼是假的?在調試器中,我看到它們都一樣。

enter image description here

解決方案:正如在評論說,這個想法也檢查毫秒,我完全忘了呢!

+10

檢查毫秒 – Alex

+7

如何比較兩個日期的刻度值? –

+4

那麼,你會發現它們和秒鐘一樣。我們不知道'model.Available.MinDate'的* exact *值。它可能實際上是2016-07-18T18:45:00.001或類似的東西。 –

回答

4

正如您在the reference source中看到的那樣,兩個DateTime對象的比較是通過它們各自的滴答完成的,這是它們的內部表示形式。

比較兩個DateTime值有點像比較兩個浮點值:差異可能很小,以至於很可能無法獲得所需的值。也許你需要檢查他們是否在同一天,或者如果他們在另一個特定的範圍內。

+0

參考原始源代碼+1 –

0

您可以使用DateTime.Compare來查看哪些時間更早/更晚。還像人們已經提到的差異可能在例如毫秒

如何使用DateTime.Compare: https://msdn.microsoft.com/en-us/library/system.datetime.compare(v=vs.110).aspx

+0

引用現有的答案很好,但如果您提供了一些關於人們如何使用您的建議來解決此問題或類似問題的其他指示,那將會更有幫助。 'DateTime.Compare'本身並不是真正的答案。例如,* How *如何從早於/晚於'DateTime.Compare'的輸出中判斷出來? –

0

比較日期時間的方式是通過比較它們的蜱屬性來完成:

bool r = date1.Ticks == date2.Ticks; 

試試這個。