准确的年龄计算[重复]

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();

【讨论】:

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

以天为单位计算用户的年龄java [重复]

C#中基于出生日期的简单年龄计算器[重复]

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

如何用EXCEL计算年龄,精确到月和天,并筛选?

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

如何从当前日期获得准确的年龄(包括年份和月份)?