1

可能重复:
如何在 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

这段代码可以吗?

4

4 回答 4

1

也许这可能很愚蠢,但我的年龄没有问题,但有时计算某人的确切年龄是件好事,我在我的个人资料中介绍了我的生日(01/12/1975)“dd/mm/yyyy ” 算出来33了,其实我还是32岁,算个​​准确的年龄不是更好吗?

我的猜测是这是一个本地化问题,尽管我不知道它会如何发生,因为(至少对我而言)个人资料让您以“YYYY/MM/DD”的格式填写您的年龄。但是你的生日在传统的美国设置中是一个有效的日期(1 月 12 日),所以这是我要研究的区域。我也是 1975 年出生的,我的生日是下个月,我的年龄正好。

于 2008-08-20T19:10:28.903 回答
0

实际上,由于闰年,您的代码将关闭。由于时间跨度对象没有 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
于 2008-08-20T19:12:59.630 回答
0

如果您出生于 1975 年 1 月 12 日,那么您今天将 33 岁。

如果您出生于 1975 年 12 月 1 日,那么您今天将 32 岁。

如果您在编辑个人资料时阅读生日字段的注释,您会看到它显示“YYYY/MM/DD”,我相信它会尝试解释其他格式的日期,但看起来它会解释 MM/DD/ YYYY(美国标准日期)优先于 DD/MM/YYYY(欧洲标准日期)。简单的解决方法是根据建议的输入样式输入您的生日日期。

于 2008-08-20T20:18:23.547 回答
0
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();
}
于 2012-05-26T11:12:50.977 回答