如何计算C#中两个日期之间的月数

时间:2013-12-19 06:46:49

标签: c#-4.0

我这样做

datediff = (date1 - DateOfDeposit).TotalDays;

但这给了不。我想要几个月的时间。

2 个答案:

答案 0 :(得分:3)

最简单的选择可能是使用我的Noda Time库,它专门用于此类事情(以及使其更清晰地处理日期和时间):

LocalDate start = new LocalDate(2013, 1, 5);
LocalDate end = new LocalDate(2014, 6, 1);
Period period = Period.Between(start, end, PeriodUnits.Months);
Console.WriteLine(period.Months); // 16

.NET中没有任何东西可以让它变得特别容易。您可以根据Ani的答案减去年份和月份,但也可以考虑月份的日期以避免我在评论中描述的问题。我建议首先编写一套好的单元测试 - 记住闰年等等。

答案 1 :(得分:3)

假设你想要整个月的数量,我认为这应该有效(不确定哪些角落不能处理,但不能想到任何偏离我的头脑):

12 * (date1.Year - DateOfDeposit.Year) + (date1.Month - DateOfDeposit.Month)

您总是可以使用DateTime.Day添加任何小数组件,但不清楚应该如何精确定义(1月29日到2月27日之间的几个月?)。

如果您正在进行大量的日期时间处理,Jon Skeet的Noda Time库(他在回答中提及)是一个不错的选择。