2017-07-14 6 views
0

ich ein einfaches Testverfahren geschrieben haben eine Methode, um zu überprüfen, die einen langen Wert Datetime konvertiert, finden Sie den Code ...Assert.Equal ist nicht mit Daten arbeiten

 [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); 
    } 

Punkt ist, dass sowohl Datum und Zeitwerte sind genau gleich (auch im Watch-Fenster verifiziert) Warum gibt es diese Ausnahme? Ich fand this Artikel, der einen Delta verwendet, um zu vergleichen, wenn kleinere Zeitdifferenz den Vergleich fehlschlägt, aber immer noch nicht sicher, warum ich immer noch eine zusätzliche Funktion benötigen Datum/Zeit Behauptungen zu vergleichen.

Bearbeiten-1: Hier ist mein Datum Umwandlungsmethode, die ich teste am

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

Auch wenn es eine Alternative zu diesem mit neuen Datetime (lange), aber logisch, was ist falsch mit diesem?

+1

Was ist 'date.GetDateTime()' hier? Das ist keine Standard-Framework-Methode. Sind Sie sicher, dass die beiden Daten in derselben Zeitzone liegen? Gleich bis auf die Millisekunde? – DavidG

+0

Ja, bitte posten Sie die Erweiterungsmethode. –

+0

hinzugefügt meine Erweiterungsmethode – ak1

Antwort

4

Auf die nächste Sekunde (die Granularität der Konsole zeigt Ihnen) sind sie gleich. Bis zum nächsten Millisekunde, sind sie nicht

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 

anschauliches Beispiel: http://rextester.com/PYDLAD6594

Verwandte Themen