我需要编写C#代码,根据出生日期和固定的考试访问日期来计算一个人的年龄。
目前代码编写如下:
public static int CalculateAge(string birthdate)
{
DateTime dob = DateTime.Parse(birthdate);
int age = DateTime.Now.Year - dob.Year;
if (DateTime.Now.Month < dob.Month)
{
age--;
}
else if (DateTime.Now.Month == dob.Month &&
DateTime.Now.Day < dob.Day)
{
age--;
}
return age;
}
我需要传入一个名为ExamDate的第二个变量来计算年龄。目前编写的方式,当FastReport运行时说3年后,显然当显示报告时,现在22岁的人将是25岁。我知道我们不能使用DateTime.Now
答案 0 :(得分:3)
将第二个日期作为参数传递,并将所有出现次数从DateTime.Now
更改为此日期:
public static int CalculateAge(string birthdate, string examDate)
{
DateTime dob = DateTime.Parse(birthdate);
DateTime ed = DateTime.Parse(examDate);
int age = ed.Year - dob.Year;
if (ed.Month < dob.Month)
{
age--;
}
else if (ed.Month == dob.Month &&
ed.Day < dob.Day)
{
age--;
}
return age;
}
因此,当您通过出生日期和考试日期时,结果将始终相同。