Используйте подход KISS.Сделайте его маленьким и простым.
Вы можете использовать странную последовательность условий или просто преобразовать свою дату во что-то более удобное.
unsigned long start = start.Date.Year * 10000ul + start.Date.month * 100 + start.Date.day;
Сделайте то же самое для temp и end.
Это даст нам некоторые числовые значения YYYYMMDD, которые можно легко сравнить.
if (start <= temp && temp <= end)
isValid = true;
Хотя это выглядит как упражнение для структур, вы можете ограничить использование структуры извлечением значений.