我有一个组合框我在其中创建了1到31日期的集合 我还有一个清单框,我在其中收集了一个月份 从1月到12月 现在我必须对日期进行验证,如果用户选择31并选择月份1月,2月,3月然后是消息弹出窗口 告知他们31月份不存在
答案 0 :(得分:15)
您需要DateTime.DaysInMonth
方法:
public bool IsDateValid(int year, int month, int day) {
return day <= DateTime.DaysInMonth(year, month);
}
我假设year
和month
值始终是合理的,并且day
将始终大于或等于1.您可以轻松添加参数验证。我还假设你已经将月份作为一个数字,而不仅仅是一个名字。 (区分值的显示格式和基础值。)
请注意,您需要一年的选择器,否则您将不知道2月29日是否有效。
(正如Mitch所说,最好设计一个UI,其中无效的选择根本不会出现,理想情况下。)
答案 1 :(得分:0)
这是我在建议有人应该使用switch
创建break
语句时使用的确切方案。
类似的东西:
public bool IsValidDay (string nameOfMonth, int day)
{
int total_days_in_month;
switch ( nameOfMonth )
{
case "jan":
case "mar":
case "may":
case "jul":
case "aug":
case "oct":
case "dec":
total_days_in_month = 31;
break;
case "apr":
case "jun":
case "sep":
case "nov":
total_days_in_month = 30;
break;
case "feb":
default:
total_days_in_month = 28;
break;
}
return ( day <= total_days_in_month );
}