准确的年龄计算[重复]
Posted
技术标签:
【中文标题】准确的年龄计算[重复]【英文标题】:Exact age calculation [duplicate] 【发布时间】:2010-09-06 07:46:26 【问题描述】:可能重复:How do I calculate someone's age in C#?
也许这可能很愚蠢,但我的年龄没有问题,但有时计算某人的确切年龄是件好事,我已经在我的个人资料中介绍了我的生日(01/12/1975)“dd/ mm / yyyy”,它计算出33,而我实际上仍然是32,计算确切年龄不是更好吗?
也许
DateTime dt1 = DateTime.Now;
TimeSpan dt2;
dt2 = dt1.Subtract(new DateTime(1975, 12, 01));
double year = dt2.TotalDays / 365;
年份的结果是 32.77405678074
这段代码可以吗?
【问题讨论】:
检查这个:http://***.com/questions/9/how-do-i-calculate-someones-age-in-c 【参考方案1】:也许这可能很愚蠢,但我的年龄没有问题,但有时计算某人的确切年龄是件好事,我已经在我的个人资料中介绍了我的生日(01/12/1975)“dd/ mm / yyyy”,它计算出33,而我实际上仍然是32,计算确切年龄不是更好吗?
我的猜测是这是一个本地化问题,尽管我不知道它是如何发生的,因为(至少对我而言)个人资料让您以“YYYY/MM/DD”的格式填写您的年龄.但是你的生日在传统的美国设置中是一个有效的日期(1 月 12 日),所以这是我要研究的领域。我也是 1975 年出生的,我的生日是下个月,我的年龄正好。
【讨论】:
【参考方案2】:如果您出生于 1975 年 1 月 12 日,那么您今天将 33 岁。
如果您出生于 1975 年 12 月 1 日,那么您今天将 32 岁。
如果您在编辑个人资料时阅读生日字段的注释,您会看到它显示“YYYY/MM/DD”,我相信它会尝试解释其他格式的日期,但看起来它会解释 MM /DD/YYYY(美国标准日期)优先于 DD/MM/YYYY(欧洲标准日期)。简单的解决方法是根据建议的输入样式输入您的生日日期。
【讨论】:
【参考方案3】:实际上,由于闰年,您的代码会关闭。由于时间跨度对象没有 TotalYears 属性,因此获得它的最佳方法是这样
请原谅 VB.Net
Dim myAge AS Integer = DateTime.Now.year - BirthDate.year
If Birthdate.month < DateTime.Now.Month _
OrElse BirthDate.Month = DateTime.Now.Month AndAlso Birthdate.Day < DateTime.Now.Day Then
MyAge -= 1
END IF
【讨论】:
【参考方案4】:int ag1;
string st, ag;
void agecal()
st = TextBox4.Text;
DateTimeFormatInfo dtfi = new DateTimeFormatInfo();
dtfi.ShortDatePattern = "MM/dd/yyyy";
dtfi.DateSeparator = "/";
DateTime dt = Convert.ToDateTime(st, dtfi);
ag1 = int.Parse(dt.Year.ToString());
int years = DateTime.Now.Year - ag1;
ag = years.ToString();
TextBox3.Text = ag.ToString();
【讨论】:
以上是关于准确的年龄计算[重复]的主要内容,如果未能解决你的问题,请参考以下文章