Ich habe zwei Datumsangaben, eine aus einem Zeitstempel und eine andere erzeuge ich in Code. Ich muss ihre Gleichheit testen und würde es gerne ohne zu viele Ausdrücke machen. Hier ist ein Beispiel für meine zwei Daten:Was ist der beste Weg, um die Gleichheit von zwei DateTime in C# zu vergleichen ... aber nur mit einer gewissen Genauigkeit?
DateTime expireTimeStampUTC =
DateTime.Parse(UTCValueFromDatabase));
DateTime expectedExpireTime =
DateTime.UtcNow.AddHours(NumberOfExpectedHoursInConfig);
Das ist zu hohe Genauigkeit eines Tests:
if (expireTimeStampUTC.Equals (expectedExpireTime)) {}
ist mir egal, wenn sie sind genau in der Sekunde, nur die Stunde.
Könnte es möglicherweise die beste Lösung sein, etwas Verbindung wie dies zu tun:
if (expireTimeStampUTC.Date.Equals(expectedExpireTime.Date))
{
if (!expireTimeStampUTC.Hour.Equals(expectedExpireTime.Hour))
{
pass = false;
}
}
ich die meisten nicht mit C# erlebt ... gibt es einige elegent Weg, dies zu tun?
Eigentlich denke ich, das ist eigentlich besser Stil. Ich denke, es ist klarer, was passiert. Ich habe das "richtige Antwort" -Token vorher nie geändert, aber ich denke in diesem Fall ist dies die bessere Lösung. – danieltalsky
Fair genug. Ich denke, es ist sechs eins/ein halbes Dutzend das andere. Die "Duration()" - Syntax ist möglicherweise besser lesbar, hat aber den (zugegebenermaßen vernachlässigbaren) Aufwand, eine TimeSpan auf beiden Seiten des Vergleichs neu zu erstellen. –