【问题标题】:Exact age calculation [duplicate]准确的年龄计算[重复]
【发布时间】:2023-03-06 05:46:02
【问题描述】:

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

这段代码可以吗?

【问题讨论】:

标签: 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();
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-05
          • 2016-03-19
          • 1970-01-01
          • 2017-11-21
          • 2020-09-25
          • 1970-01-01
          相关资源
          最近更新 更多