根据访问日期计算年龄

Calculate Age based on Visit Date

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

将第二个日期作为参数传递,并将所有出现的日期从 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;
}

因此,当您传递人的出生日期和考试日期时,结果将始终相同。