首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从DateTime中以Years.Months格式计算年龄?

从DateTime中以Years.Months格式计算年龄?
EN

Stack Overflow用户
提问于 2012-02-03 11:56:29
回答 3查看 3.7K关注 0票数 8

是否有人在c#中有一种算法来精确地计算给定DateTime格式的年龄( Years.Months )?

例如:

  • 道布:1988年9月6日
  • 答覆: 23.4
  • 道布:31-1991年3月
  • 答覆: 20.10
  • 道布:1991年2月25日
  • 答覆: 20.11

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-03 12:04:21

您可以很容易地在野田时间中做到这一点:

代码语言:javascript
运行
复制
using System;
using NodaTime;

class Test
{
    static void Main()
    {
        ShowAge(1988, 9, 6);
        ShowAge(1991, 3, 31);
        ShowAge(1991, 2, 25);
    }

    private static readonly PeriodType YearMonth =
        PeriodType.YearMonthDay.WithDaysRemoved();

    static void ShowAge(int year, int month, int day)
    {
        var birthday = new LocalDate(year, month, day);
        // For consistency for future readers :)
        var today = new LocalDate(2012, 2, 3);

        Period period = Period.Between(birthday, today, YearMonth);
        Console.WriteLine("Birthday: {0}; Age: {1} years, {2} months",
                          birthday, period.Years, period.Months);
    }
}

只使用.NET的DateTime支持就可以做到这一点,但基本上您必须自己做算法。几乎可以肯定的是,情况就不那么明朗了。不是说我有偏见什么的

票数 13
EN

Stack Overflow用户

发布于 2015-02-10 15:56:10

此方法不需要任何外部库:

代码语言:javascript
运行
复制
private static string AgeInYearsMonths(DateTime? DateOfBirth)
{
    if (DateOfBirth == null) return "";
    if (DateOfBirth >= DateTime.Today)
        throw new ArgumentException("DateOfBirth cannot be in future!");

    DateTime d = DateOfBirth.Value;
    int monthCount = 0;
    while ((d = d.AddMonths(1)) <= DateTime.Today)
    {
        monthCount++;
    }
    return string.Format("{0}.{1}", monthCount / 12, monthCount % 12);
}
票数 3
EN

Stack Overflow用户

发布于 2012-02-03 12:14:16

代码语言:javascript
运行
复制
var date=new DateTime(DateTime.Now.Subtract(new DateTime(1988,10,31)).Ticks);
Console.WriteLine((date.Year-1).ToString()+"."+(date.Month-1).ToString());
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9128282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档