2013-06-19 2 views
0

У меня есть дата начала (предположим, 01/15/2013), а также общее количество дней (предположительно 395 дней), прошедших с даты начала (дата окончания будет приходят как 13.02.2012). Теперь, как я могу рассчитать, сколько месяцев в эти много дней.Как рассчитать количество месяцев, если у меня есть дата начала и истекшее количество дней

+0

Соответствующий/полезный: http://msdn.microsoft.com/en-us /library/system.datetime.aspx –

+4

Каково ваше определение «месяц»? – Xaruth

+0

+1 к вопросу Харута. Вам нужно определить, что вы подразумеваете под «сколько месяцев между этими датами». Начиная с 31 января, с продолжительностью 1 день, дает дату окончания 1 февраля - но это один месяц или ноль? – Chris

ответ

0

В зависимости от вашего определения месяцев вы можете сделать только Math.Ceil(days/30) или Math.Floor(days/30).

Вы можете цикл добавления месяцев до from Дата:

DateTime from = new DateTime(2013, 01, 15); 
DateTime to = from.AddDays(395); 
var months = 0; 
var date = from; 

while(date <= to) 
{ 
    ++months; 
    date = date.AddMonths(1); 
} 

Другой трюк должен сделать:

DateTime diff = DateTime.MinValue + (to - from); 

// note: MinValue is 1/1/1 so we have to subtract... 
var years = diff.Year - 1; 
var months = diff.Month - 1; 

months += years * 12; 
+0

«System.TimeSpan» не содержит определения для «Месяцев» – Xaruth

+0

, которое вы изменили для «TotalDays». Ну, это 395, не так ли? – Xaruth

+0

Извините, смущен. Правильный ответ на месте ;-) –

Смежные вопросы