2017-07-14 64 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