2017-07-14 46 views
0

我已經寫了一個簡單的測試方法來驗證將long值轉換爲DateTime的方法工作,下面是代碼...Assert.Equal不與日期

 [TestMethod] 
    public void ConvertToDateTime_TestMethod() 
    { 
     long date = 1500024370374; 

     DateTime result = date.GetDateTime(); 
     DateTime comparisonDate = new DateTime(2017, 07, 14, 9, 26, 10); 
     Assert.AreEqual(result, comparisonDate); 
    } 

的一點是,日期和時間值完全相同(也在觀察窗口中驗證)爲什麼它會產生此異常?我發現this文章使用增量來比較,如果次要時間差異比較失敗,但仍然不確定爲什麼我仍然需要一個額外的功能來比較日期/時間斷言。

編輯-1:這是我測試

public static DateTime GetDateTime(this long milliseconds) 
    { 
     try 
     { 
      return new DateTime(1970, 1, 1).AddMilliseconds(Convert.ToDouble(milliseconds)); 
     } 
     catch { throw; } 
    } 

即使有一個備用的這一新的日期時間(長)我的日期轉換的方法,但在邏輯上什麼問題呢?

+1

什麼是'date.GetDateTime()'在這裏嗎?這不是一個標準的框架方法。你確定這兩個日期是在同一時區嗎?等於毫秒? – DavidG

+0

是的,請張貼擴展方法。 –

+0

添加了我的擴展方法 – ak1

回答

4

到最近的秒鐘(控制檯向您顯示的粒度),它們是相等的。到毫秒,他們不是

long date = 1500024370374; 
DateTime result = new DateTime(1970,1,1).AddMilliseconds(date); 
DateTime comparisonDate = new DateTime(2017, 07, 14, 9, 26, 10); 

Console.WriteLine(result.ToString("dd-MM-yyyy HH:mm:ss.fffff")); 
// 14-07-2017 09:26:10.37400 
Console.WriteLine(comparisonDate.ToString("dd-MM-yyyy HH:mm:ss.fffff")); 
// 14-07-2017 09:26:10.00000 

活生生的例子:http://rextester.com/PYDLAD6594