两个日期之间年/月/日的错误计算

1 .net c# datetime date

我尝试做的是计算两个日期之间的年数,月数和天数.不幸的是,没有.NET Framework的方法可以做到这一点.

我所做的基本上如下:http: //www.codeproject.com/Articles/28837/Calculating-Duration-Between-Two-Dates-in-Years-Mo

根据所述网站的评论进行一些调整:

var monthDay = new[] { 31, 31, -1, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
Run Code Online (Sandbox Code Playgroud)

DayCalculation:

if (fromDate.Day > toDate.Day)
{
    increment = monthDay[toDate.Month - 1];
}
Run Code Online (Sandbox Code Playgroud)
if (increment == -1)
{
    increment = DateTime.IsLeapYear(toDate.Year) ? 29 : 28;
}
Run Code Online (Sandbox Code Playgroud)

所以我有以下效果:

日期1:1979-01-30

日期2:2013-03-01

产量为:34年,1个月,-1天

预期产量为:34年,1个月,1天

每次都会发生这种效果,Date2是3月的日期.

你知道这个计算有什么问题吗?或者您是否知道如何获得理想结果的更好解决方案?

提前致谢

PS:我知道,你可以计算两个日期之间的天量,但我需要的是成品多年的量,成品几个月的量和成品天量

Jon*_*eet 8

不幸的是,没有.NET Framework的方法可以做到这一点.

没错,但有 野田的时间,而不是:)(这是我的港约达时间到.NET,虽然有两个项目之间有不少分歧.)

LocalDate start = new LocalDate(1979, 1, 30);
LocalDate end = new LocalDate(2013, 3, 1);
Period period = Period.Between(start, end);
Console.WriteLine("{0} years, {1} months, {2} days",
                  period.Years, period.Months, period.Days);
Run Code Online (Sandbox Code Playgroud)

输出:

34 years, 1 months, 1 days
Run Code Online (Sandbox Code Playgroud)