如何从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 结构表示一个时间间隔,它具有Days
、Hours
、Seconds
等属性,因此您可以根据需要使用它们。
【讨论】:
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计算年龄[重复]的主要内容,如果未能解决你的问题,请参考以下文章