如何从c#中的dob计算年龄[重复]

Posted

技术标签:

【中文标题】如何从c#中的dob计算年龄[重复]【英文标题】:How to calculate age in years from dob in c# [duplicate] 【发布时间】:2013-01-23 20:04:06 【问题描述】:
   private void button1_Click(object sender, EventArgs e)
    
        DateTime dob = new DateTime();
        textBox1.Text = dob.ToString();
        int age;
        age = Convert.ToInt32(textbox2.Text);
        age = DateTime.Now.Year - dob.Year;
        if (DateTime.Now.DayOfYear < dob.DayOfYear)
            age = age - 1;

    

如何从 dob 计算年龄。这是我的 form1.cs。请有任何想法

【问题讨论】:

【参考方案1】:

[更新]:要考虑闰年,请使用 365.242 instead of 365。你应该很好till the year 2799 I believe。

DateTime 有一个运算符重载,当您使用减法运算符时,您会得到一个 TimeSpan 实例。

所以你会这样做:

DateTime dob = ..
TimeSpan tm = DateTime.Now - dob;
int years = ((tm.Days)/365);

理想情况下,您的代码应如下所示:

private void button1_Click(object sender, EventArgs e)

    DateTime dob = //get this some somewhere..
    textBox1.Text = dob.ToString();
    TimeSpan tm = (DateTime.Now - dob);
    int age = (tm.Days/365) ;

TimeSpan 结构表示一个时间间隔,它具有DaysHoursSeconds 等属性,因此您可以根据需要使用它们。

【讨论】:

TimeSpan 没有 Years 属性 @Habib 更新了答案。我不认为需要投票,我只是在充实它的同时给出了一个足以满足 OP 的答案。 :// I just threw in an answer that was sufficient for the OP while I was fleshing it out - 不应该这样,你之前的回答甚至没有编译,这就是为什么不赞成,现在我已经删除了反对 我认为一个错误的答案应该投反对票,现在如果他在你纠正你的错误后没有删除它,那将是不必要的。 (顺便说一句,一年没有365天,去问Fredric他多大了) 大声笑@DilipanK,点击刷新此页面。【参考方案2】:

您可以使用 TimeSpan 来计算它,例如:

DateTime dob = .....
DateTime Today = DateTime.Now;
TimeSpan ts = Today - dob;
DateTime Age = DateTime.MinValue + ts;


// note: MinValue is 1/1/1 so we have to subtract...
int Years = Age.Year - 1;
int Months = Age.Month - 1;
int Days = Age.Day - 1;

来源:http://forums.asp.net/t/1289294.aspx/1

【讨论】:

在我的测试中,某些日期会产生不正确的结果:( 例如,尝试计算某人在 2017 年 1 月 12 日出生时的年龄,当时该人出生于 1996 年 1 月 13 日。上面的代码返回 21 岁而不是 20 岁,但他们的 21 岁生日应该是明天。【参考方案3】:
DateTime today = DateTime.Today;

int age = today.Year - bday.Year;

if (bday > today.AddYears(-age))
 age--;

【讨论】:

这是唯一正确的答案

以上是关于如何从c#中的dob计算年龄[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何计算rails admin中的年龄作为出口值?

PHP 从DOB计算年龄

从出生日期计算年龄

如何选择年龄范围内的人[重复]

使用Laravel 5.2计算Y-m-d中存储在数据库中的日期的年龄

MySQL按年月日计算年龄