我这样做
datediff = (date1 - DateOfDeposit).TotalDays;
但这给了不。我想要几个月的时间。
答案 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库(他在回答中提及)是一个不错的选择。