C# 年龄计算
可能重复:C# 年龄计算,c#,.net,datetime,C#,.net,Datetime,可能重复: 我正在尝试创建一个表单,其中输入客户的出生日期,并在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.Ev
我正在尝试创建一个表单,其中输入客户的出生日期,并在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”
在几天内尝试以下年龄:
txtAgeInDays.Text = (DateTime.Now - dob).ToString ("dddddd");
请参见您需要导入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();
}
private void dtpDOB_Leave(对象发送方,System.EventArgs e){
System.DateTime dob=默认值(System.DateTime);
dob=dtpDob.Value.Date;
int age=-1;
DateTime today=DateTime.today;
而(dob将此作为扩展方法也将是一种很好的方法:)这并不能解释闰年,所以当生日接近今天时,它会显示错误的年龄。@Guffa true,补充了这一部分。尽管如此,这个问题还是应该结束,因为重复性更好,但它仍然是一个近似值,在某些情况下会显示错误的年龄(是的,我已经测试过这个).@Guffa yaeh我知道。我自己测试了一下。但我不想在一个问题上花太多时间,因为答案已经很清楚了
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();
}