В коде, который вы разместили, нет ничего плохого, поэтому все, что вы сделали неправильно, находится где-то еще в коде.
Я вижу только два незначительных недостатка в коде, но они влияют только на угловые случаи:
Вам следует избегать повторного использования свойства DateTime.Now в коде. Его значение изменяется, поэтому вы можете получить несогласованные результаты в некоторых случаях, когда значения меняются от одного использования к другому.
Чтобы получить временной интервал, вы обычно соединяете один включительно и один эксклюзивный оператор, например > и <=, или >= и <. Таким образом, вы можете проверять интервалы рядом друг с другом, например 0 - 24 часа и 24 - 28 часов, без получения пробела или перекрытия.
DateTime now = DateTime.Now;
if (myDateTime > now.AddHours(-24) && myDateTime <= now)
Ответ 2
Только получить DateTime.Now один раз внутри функции - иначе значение может измениться.
Используйте <=, а не <. если вы проверите микросекунду по истечении установленного времени, она будет по-прежнему равна DateTime.Now. Я на самом деле столкнулся с этим в производственном коде, где импорт не отображался в другом запросе, который проверял <, потому что импорт был слишком быстрым!
Используйте этот код:
DateTime now = DateTime.Now;
DateTime yesterday = now.AddDays(-1);
if (myDateTime > yesterday && myDateTime <= now) {
...
}