给定字符串输入,我如何在C#中计算年龄

本文关键字:计算 字符串 输入 | 更新日期: 2023-09-27 18:23:48

我想计算一个人的当前年龄。出生日期(DOB)数据是使用TextBox输入的,我的数据库将DOB存储为varchar。

如何从这个出生日期找到当前年龄?

给定字符串输入,我如何在C#中计算年龄

这里有很多事情需要做。首先,您需要一种方法来解析存储在数据库中的日期,该日期最初是由用户手动输入的。这是一项艰巨的任务,因为用户倾向于键入任何内容。

DateTime.Parse()开始,处理所有你会遇到的错误,是的,你会遇到错误。例如,您如何知道"09/10/11"的含义?这是美国约会还是英国约会?

一种可能性是从TextBox切换到某种形式的MaskedTextBox,以强制用户始终以相同的格式输入日期,并将日期作为真实日期正确存储在数据库中。

在你有了一个合适的DateTime值后,你可以使用简单的减法来得到这个人的年龄,但你得到的TimeSpan值并不完全有用,因为我认为你需要输出这个人的完整年龄。

// Assuming dateOfBirth is a DateTime value
TimeSpan age = DateTime.Today - dateOfBirth;

这里的age变量保存从出生日期到今天所经过的时间。考虑到年份长短不同,这不是最好的选择。我会这样做:

DateTime today = DateTime.Today;
int years = today.Year - dateOfBirth.Year;
if (dateOfBirth.Month > today.Month) {
    --years;
}
else if (dateOfBirth.Month == today.Month && dateOfBirth.Day > today.Day) {
    --years;
}
// TODO: Output the years variable.

如果日期总是相同的格式,则可以使用DateTime.TryParseExact(),但这里的情况似乎并非如此。

也许这个图书馆对你有帮助,作者也有同样的问题:http://www.codeproject.com/Articles/33298/C-Date-Time-Parser

这并不能保证每种格式都可以被解析。

您可以转换DOB string into DateTime object,然后可以计算年龄:)

DateTime dateDOB=DateTime.Parse(txt_dob.Text);

int now=int.Parse(DateTime.Today.ToString("yyyyMMdd"));

int dob=int.Parse(dateDOB.ToString("yyyyMMdd"));

string dif=(now-dob).ToString();

string年龄="0";

如果(差异长度>4)

年龄=差异。衬底(0,不同长度-4);

txt_age.Text=年龄。ToString();