我想以他现在的年龄来计算出生年份,

时间:2012-03-08 09:35:45

标签: c# winforms

我想计算出生年份的年龄,例如他的年龄是30岁,在datetimepicker框中,日期应该显示为01/01/1982。它应该是自动计算。

         int todayyears = int.Parse (DateTime.Now.Year.ToString());

        int a = int.Parse (int.Parse(txt_age.Text).ToString());

        string dif = (todayyears - a).ToString();

        txt_dob.Text = dif;

此处txt_age是给定的输入值,txt_dobtxt_age中给出的输入后自动显示出生日期。

5 个答案:

答案 0 :(得分:6)

您似乎无缘无故地将方式过多的东西转换为字符串。

如果始终想要显示1月1日,您只需要:

// Note: use int.TryParse to avoid exceptions if the user input isn't an integer
int age = int.Parse(txt_age.Text);

DateTime date = new DateTime(DateTime.Today.Year - age, 1, 1);

txt_dob.Text = date.ToString(); // Or use a specific format

请注意,“txt_dob”中的“dob”不合适,因为这不是用户的出生日期,只是在出生年份的1月1日非常不同。

答案 1 :(得分:2)

应该是这样的:

txt_dob.Text = DateTime.Now.AddYears(int.Parse(txt_age.Text) * -1).ToString("01/01/yyyy");

答案 2 :(得分:2)

您可以使用给定年份创建日期时间。

所以计算一年。 (本年度 - 年龄)。

int Age = 30; // obtain from your given field.
int YofBirth = DateTime.Now.Year - Age;

DateTime d = new DateTime(YofBirth , 1, 1);

然后使用此Datetime d设置字段。

答案 3 :(得分:1)

试试这个

int todayyears = DateTime.Now.Year;
            int a = int.Parse(txt_age.Text);
            string dob = new DateTime(todayyears - a, DateTime.Today.Month, DateTime.Today.Day);
txt_dob.Text=dob;

答案 4 :(得分:0)

这样的事情:

int age;
if(int.TryParse(txt_age.Text,out age))
{
    txt_dob.Text= new DateTime(DateTime.Now.Year-age,1,1).ToShortDateString();
}