急,急,简单算法问题?

sunboyyun 2009-01-07 04:53:11
private int Age(string txtIdCard)
{
DateTime birthday = BirthDate(this.txtIdCard.Text); //方法在下面
return DateTime.Today.CompareTo(birthday);
}

private DateTime BirthDate(string txtIdCard)
{
try
{
if (txtIdCard.Length == 15)
{
return new DateTime(int.Parse("19" + txtIdCard.Substring(7, 2)), int.Parse(txtIdCard.Substring(9, 2)), int.Parse(txtIdCard.Substring(11, 2)));
}
else if (txtIdCard.Length == 18)
{
return new DateTime(int.Parse(txtIdCard.Substring(6, 4)), int.Parse(txtIdCard.Substring(10, 2)), int.Parse(txtIdCard.Substring(12, 2)));
}
else
return DateTime.MinValue;
}
catch { return DateTime.MinValue; }
}
txtIdCard为接收的身份证号码,为什么计算的年龄不正确啊??请高手指教??
...全文
79 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunboyyun 2009-01-08
  • 打赏
  • 举报
回复
谢谢各位了,结贴~~
niitnanfeng 2009-01-07
  • 打赏
  • 举报
回复
感觉是return DateTime.Today.CompareTo(birthday); 的问题。你换其他的试试,就像楼上的几位说的试试。
koukoujiayi 2009-01-07
  • 打赏
  • 举报
回复
private int Age(string txtIdCard)
{
DateTime birthday = BirthDate(this.txtIdCard.Text); //方法在下面
return DateTime.Today.CompareTo(birthday);
}
改成以下:
return DateTime.Today.Year - birthday.Year;
bidisty 2009-01-07
  • 打赏
  • 举报
回复
将此实例的值与指定的 DateTime 值相比较,并返回一个整数,该整数指示此实例是早于、等于还是晚于指定的 DateTime 值。

小于零
此实例早于 value。


此实例与 value 相同。

大于零
此实例晚于 value。

只会有1,0,-1的结果
止戈而立 2009-01-07
  • 打赏
  • 举报
回复
return DateTime.Today.CompareTo(birthday);
这里错了。

return DateTime.Now.Year-birthday.Year;




我认为返回总天数可能更好:
return (DateTime.Now.Yer-birthday).Days;


zgke 2009-01-07
  • 打赏
  • 举报
回复
你不是得到了 身份证的生日了吗?

TimeSpan _Years =DateTime.Now - BirthDate("123456198001010111");

int _YearsNumb = _Years.Days / 365;
if (_Years.Days%365 !=0)_YearsNumb++;


this.Text = _YearsNumb.ToString();

111,131

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧