我正在尝试创建一个表单,其中输入了客户的出生日期,并且他的年龄会自动显示在txtAge中:
private void Form3_Load(object sender, EventArgs e)
{
dtpDob.Value = DateTime.Today.Date;
SqlConnection conn = new SqlConnection();
}
private void dtpDOB_Leave(object sender, System.EventArgs e)
{
System.DateTime dob = default(System.DateTime);
dob = dtpDob.Value.Date;
txtAge.Text = DateTime.DateDiff(DateInterval.Year, dob, DateTime.Today.Date);
}
但是我得到了这些错误:
'System.DateTime'不包含'DateDiff'的定义 “DateInterval”这个名称在当前上下文中不存在。
答案 0 :(得分:6)
public static int GetAge(DateTime birthDate)
{
return (int)Math.Floor((DateTime.Now - birthDate).TotalDays / 365.242199);
}
答案 1 :(得分:1)
您需要导入VB库才能使用DateDiff
,而且它不是DateTime
结构的一部分。
尽管使用DateDiff
并未正确计算年龄,但它只会为您提供日期年份之间的差异,而不是年份中日期之间的差异。
计算年龄的一种简单方法是将出生日期延长一年,直至您通过今天的日期:
private void dtpDOB_Leave(object sender, System.EventArgs e) {
System.DateTime dob = default(System.DateTime);
dob = dtpDob.Value.Date;
int age = -1;
DateTime today = DateTime.Today;
while (dob <= today) {
age++;
dob = dob.AddYears(1);
}
txtAge.Text = age.ToString();
}
注意:此计算需要考虑闰年,因此您将获得实际年龄,而不是近似值。
答案 2 :(得分:0)
尝试以天为单位的年龄:
txtAgeInDays.Text = (DateTime.Now - dob).ToString ("dddddd");
请参阅http://msdn.microsoft.com/en-us/library/system.timespan.tostring.aspx