Как проверить, есть ли дата ввода с интервалом? - PullRequest
0 голосов
/ 18 марта 2019

Я использую язык c, и наш урок сейчас о структурах. Вот часть моего кода, а «temp» - это структура, в которой также есть структура даты. Однако в некоторых случаях некоторые действительные даты не могут быть указаны до последнего условия.

if( temp.Date.year >= start.year &&  temp.Date.year <= end.year)    
if( (temp.Date.year >= start.year &&  temp.Date.year <= end.year) && (temp.Date.month >= start.month &&  temp.Date.month <= end.month) )    
if( (temp.Date.year >= start.year &&  temp.Date.year <= end.year) && (temp.Date.month >= start.month &&  temp.Date.month <= end.month) && temp.Date.day >= start.day &&  temp.Date.day <= end.day)
                        isDateValid = 1;

1 Ответ

1 голос
/ 18 марта 2019

Используйте подход 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;

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...