Самый надежный способ сравнения даты и времени? - PullRequest
1 голос
/ 22 января 2011

Я в основном использую Delphi на своем рабочем месте, и во время некоторых тщательных модульных тестов, в ходе которых сравнивалось время дат, я обнаружил, что прямое сравнение с использованием оператора равно недостаточно надежно при сравнении вычисленных дат и т. Д.Правило, которое я начал использовать CompareDateTime и SameDateTime , которые встроены в функции для сравнения дат в Delphi.

В C # по привычке я сравниваю дату / время по стандартуоператоры =<>.У нас есть аналогичные функции, такие как DateTime.Compare и DateTime.Equals для сравнения даты и времени, поэтому с точки зрения точности и надежности я должен действительно использовать встроенные функциивместо этого?

Дадут ли мне более точное сравнение с оператором?

Ответы [ 2 ]

4 голосов
/ 22 января 2011

Учитывая, что ваши дата / время рассчитаны, вам лучше рассчитать разницу между временем, которое дает вам TimeSpan.

TimeSpan travelTime = arrival - departure;

Затем вы можете проверить, что это меньше вашего допустимого отклонения.

if (Math.Abs(travelTime.TotalMilliseconds) < tolerance)
{
    // times are equal.
}

Это похоже на подход, который вы должны использовать для значений с плавающей запятой, но не зависит от этого, так как в этом случае неточность связана с вашими данными, а не с тем, как они представлены в памяти.

1 голос
/ 22 января 2011

Я не совсем уверен, но мой коллега сказал мне всегда использовать оператор Equals. Для объектов DateTime Equals и Compare сравнивают отметки.

Если вы хотите узнать больше о упомянутом ChrisF TimeSpan методе, см. здесь .

...