如何检查给定日期是否存在于月份?

时间:2014-01-03 09:30:24

标签: c# linq date

我有一个组合框我在其中创建了1到31日期的集合 我还有一个清单框,我在其中收集了一个月份 从1月到12月 现在我必须对日期进行验证,如果用户选择31并选择月份1月,2月,3月然后是消息弹出窗口 告知他们31月份不存在

enter image description here

2 个答案:

答案 0 :(得分:15)

您需要DateTime.DaysInMonth方法:

public bool IsDateValid(int year, int month, int day) {
    return day <= DateTime.DaysInMonth(year, month);
}

我假设yearmonth值始终是合理的,并且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 );
}