根据访问日期

时间:2015-09-23 19:00:11

标签: c# fastreport

我需要编写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

1 个答案:

答案 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;
}

因此,当您通过出生日期和考试日期时,结果将始终相同。