У вас есть дублирующее утверждение:
else if ((selected_year == year) && (selected_month == month))
Последнее никогда не будет оцениваться, потому что предыдущее уже его заберет.Я знаю, что второй более конкретен, но это не имеет значения.Например, если ваши годы совпадают, а месяцы совпадают, не будет иметь значения, что ваши дни тоже совпадают, потому что первое утверждение, которое становится истинным, - это ваше заявление error = 3
else if.из двух нижних утверждений оцениваются, я думаю, что @Andreas_D на это, когда он упоминает, что месяц является нулевым значением.Возможно, это утверждение работает, но не так, как вы ожидали.