年龄介于21至25岁之间的日期选择器

本文关键字:之间 日期 选择器 25岁 | 更新日期: 2023-09-27 17:59:07

我制作了一个应用程序,用户可以使用DatePicker选择出生日期。用户年龄必须在21岁以上26岁以下。如果用户年龄在21岁以上26岁以下,则会出现一个消息框,上面写着"成功"。然而,当我选择一个介于21到25之间的出生日期时,什么都不会发生。不确定我做错了什么,但我认为在我的datePicker 中,我选择的日期减去了21和26

我的代码和一样

xaml

<DatePicker HorizontalAlignment="Center" Name="dpkDOB" Grid.Column="1" VerticalAlignment="Top" Grid.Row="10" />

xaml.cs

  DatePicker dp = new DatePicker();
            DateTime dateMinimum = dpkDOB.SelectedDate.Value.AddYears(-21);
            DateTime dateMaximum = dpkDOB.SelectedDate.Value.AddYears(-26); // 26, as this would include somebody whose just below 26 years old
            DateTime birthDate = Convert.ToDateTime(dp.SelectedDate);
            if (birthDate > dateMinimum && birthDate < dateMaximum)
            {
                MessageBox.Show("Success");
            }

年龄介于21至25岁之间的日期选择器

您选择了错误的DatePicker进行比较:

DateTime birthDate = Convert.ToDateTime(dp.SelectedDate);

应该是

DateTime birthDate = Convert.ToDateTime(dpkDOB.SelectedDate);

根据评论:

DateTime birthDate = Convert.ToDateTime(dpkDOB.SelectedDate);
if(birthDate > DateTime.Now.AddYears(-26) && birthDate < DateTime.Now.AddYears(-21))
{
    // do stuff
}

如果您在解决方案中更频繁地需要此功能,请考虑这样的扩展:

public static class Extensions
{
    public static TimeSpan Age(this DateTime dt)
    {
        return (DateTime.Now - dt);
    }
    public static int Years(this TimeSpan ts)
    {
        return (int)((double)ts.Days / 365.2425);
    }
}

用法:

DateTime birthDate = Convert.ToDateTime(dpkDOB.SelectedDate);
if (birthDate.Age().Years() > 21 && birthDate.Age().Years() < 26)
{
    // do stuff
}