Stackoverflow sử dụng chức năng như vậy để xác định tuổi của người dùng.
Calculate age in C#
Câu trả lời được đưa ra là
DateTime now = DateTime.Today;
int age = now.Year - bday.Year;
if (now < bday.AddYears(age)) age--;
Vì vậy, phương pháp helper của bạn sẽ trông như thế
public static string Age(this HtmlHelper helper, DateTime birthday)
{
DateTime now = DateTime.Today;
int age = now.Year - birthday.Year;
if (now < birthday.AddYears(age)) age--;
return age.ToString();
}
Hôm nay, tôi sử dụng một phiên bản khác của chức năng này để bao gồm một ngày tham khảo . Điều này cho phép tôi để có được tuổi của một ai đó vào một ngày trong tương lai hoặc trong quá khứ. Điều này được sử dụng cho hệ thống đặt chỗ của chúng tôi, nơi cần có tuổi trong tương lai.
public static int GetAge(DateTime reference, DateTime birthday)
{
int age = reference.Year - birthday.Year;
if (reference < birthday.AddYears(age)) age--;
return age;
}
Nguồn
2010-02-03 20:05:20
Tại sao không chỉ 'DateTime mới (DateTime.Now.Subtract (birthDate.Ticks) .Year - 1'? –
Một lưu ý phụ, hành vi đúng cho ngày sinh trong tương lai là gì? Trả về một số âm? người theo nghĩa đen sinh ngày hôm qua có tuổi 0 năm? –
@Steven Người nào đó chưa sinh ra phải luôn có độ tuổi là 0, imo. Bạn chỉ có 1 năm vào cuối năm đó. Chúng tôi tổ chức sự thay đổi trong ngày, nhưng năm 2000 đã hoàn thành chỉ vào đầu năm 2001, vì vậy chúng ta nên ăn mừng năm 2000 vào đầu năm 2001 không phải vào đầu năm 2000. –