Как рассчитать количество месяцев между двумя датами в С#
Я делаю это
datediff = (date1 - DateOfDeposit).TotalDays;
Но это дает нет. дней, и я не хочу месяцев.
Ответ 1
Предполагая, что вы хотите количество месяцев в целом, я думаю, что это должно сработать (не знаю, какие угловые случаи это не обрабатывает, но не может думать о чем-то с моей головы):
Вы всегда можете добавить какой-либо дробный компонент с DateTime.Day, но не ясно, как именно это должно быть определено (сколько месяцев между 29 января и 27 февраля?).
Если вы занимаетесь обработкой даты и времени, библиотека Jon Skeet Noda Time (которую он упоминает в его ответе) является хорошим выбором.
Ответ 2
Самый простой вариант - это, вероятно, использовать мою библиотеку 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 нет ничего, чтобы сделать это особенно просто. Вы можете вычитать годы и месяцы в соответствии с ответом Ани, но затем также учитывать день месяца, чтобы избежать проблемы, которую я описываю в комментариях. Я бы посоветовал сначала написать хороший набор модульных тестов, хотя, имея в виду високосные годы и т.д.