有没有开箱即用的解决方案这一点。问题是,你正在处理的变量的数据即不是所有年份365天,闰年就变成366。此外,不是每个月都可以被认为是标准的30天。
这是非常难以计算这类信息,没有背景 - 你有时间的日子,然而,来计算(至少准确)的年/月,你需要的上下文的数量。例如,你需要知道哪些特定的月份和它特殊的一年,你正在处理以确定年份是否是闰年,或者特定的月份是30/31天,依此类推......
- 1年= 365天
- 1个月= 30天
那么下面code将完成这项工作。
开始时间
DateTime startDate = new DateTime(2010, 1, 1);
结束时间
DateTime endDate = new DateTime(2013, 1, 10);
获取天数
var totalDays = (endDate - startDate).TotalDays;
年
var totalYears = Math.Truncate(totalDays / 365);
月
var totalMonths = Math.Truncate((totalDays % 365) / 30);
日
var remainingDays = Math.Truncate((totalDays % 365) % 30);
打印出来
Console.WriteLine("Estimated duration is {0} year(s), {1} month(s) and {2} day(s)", totalYears, totalMonths, remainingDays);