2015-07-08 3 views
1

В настоящее время я использую код ниже, чтобы найти разницу между двумя датами.Разница между двумя месяцами - только по месяцам и не датируется

var WatMonths = ((WatInjEndDate.Year - WaterStartDate.Year) * 12) + WatInjEndDate.Month - WaterStartDate.Month 

Например:

WaterStartDate = 9/28/2015 
WaterInjEndDate = 12/4/2015 

Ответ, который я получаю от выше кода 3. Но мое окончательное требование, чтобы получить «4», которая изображает месяцы 9,10,11,12, как WaterStartDate находится в 9-м месяце, а Enddate - в 12-м месяце.

Что следует изменить в коде?

+7

Добавить 1 в WatMonths (не шутка!) – Graffito

+1

Это общее правило, по математике, чтобы получить количество чего-то: (endIndex- STARTINDEX) + 1. –

+0

и какой результат вы ожидаете на 9/1/2015 и 9/28/2015? если результат 1 - ответ отправлен в комментарии выше – Artem

ответ

0

В этом случае вы определяете число месяцев с датами и включаете как месяц начала, так и дату окончания. Таким образом, количество месяцев между 2015/1/1 и 2015/1/1 будет 1. Вы уверены, что это поведение, которое вы хотите?

Чтобы выполнить описанное вами поведение, просто добавьте + 1 в конец вашего задания.

var WatMonths = ((WatInjEndDate.Year - WaterStartDate.Year) * 12) + 
        WatInjEndDate.Month - WaterStartDate.Month + 1 
+0

Спасибо! Это проще, чем я это сделал! – Cartman23

+0

@ Cartman23: Просто будьте осторожны при расчете продолжительности инъекционной воды ... ;-) Из моего опыта в отрасли вы можете вместо этого представить частичные месяцы (типичные для расчетов «Days Online»/«Months Online»). – grovesNL

+0

Согласен. но это будет использоваться для расчета и инвентаризации в будущем. Следовательно, будет основываться на Days online = Days of the month. – Cartman23

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