因此,我使用了在此处不同用户提出的问题上找到的解决方案,链接:如何在 C# 中计算某人的年龄?,其中 DOB 是硬编码的,我添加了代码以从控制台接收用户输入,然后计算年龄,但是我不知道为什么 if 语句会产生正确的结果,没有它,它会计算您的年龄是那一年,而不是你的实际年龄。
var today = DateTime.Today;
Console.WriteLine("Type in your D.O.B in DD-MM-YYYY format:");
var Bday = Console.ReadLine();
var myDate = Convert.ToDateTime(Bday);
var age = today.Year - myDate.Year;
if (myDate.Date > today.AddYears(-age)) age--;
Console.WriteLine($"You are {age} years old");
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激!
您问的是这条线是如何工作的:
if (myDate.Date > today.AddYears(-age)) age--;
Run Code Online (Sandbox Code Playgroud)
年数是通过从现在的年份减去出生年份的年份来计算的。例如,如果您的出生日期是 1979 年 5 月 15 日,现在是 2020 年,则结果为:
age = 2020 - 1979 = 41
Run Code Online (Sandbox Code Playgroud)
然而,如果这个人的出生日期是在今天之后,那么他们还不是41岁,他们仍然是40岁。
就该if声明而言,如果他们的出生日期(月份和日期)在今天之后,则减去一年即可age得出正确的年龄(在我的示例中为 40 岁)。
逻辑并不那么简洁,但本质上它是这样说的:
| 归档时间: |
|
| 查看次数: |
1789 次 |
| 最近记录: |