2012-05-31 6 views
8

Я хотел бы знать, как рассчитать числа Месяца между двумя датами. Есть ли способ вычислить его в C#?Как рассчитать числа месяцев между двумя датами в C#

Eg1. Date1 = "2011/11/01" 
     Date2 = "2012/02/01"  
Result. Numbers of Month =3 

Eg2. Date1 = "2012/01/31" 
     Date2 = "2012/02/01" 
Result. Numbers of Month =1 

Eg3. Date1 = "2012/01/01" 
     Date2 = "2012/02/28" 
Result. Numbers of Month =1 
+2

Как насчет еще несколько тестовых случаев? Ваша проблема не указана. Это одна из проблем, когда выяснение того, что вам нужно, сложнее, чем ее реализация. – CodesInChaos

+3

http://stackoverflow.com/questions/1525990/difference-in-months –

+1

Сначала у вас должно быть четкое представление о том, что такое «количество месяцев между двумя датами». Как с 2012-01-25 по 2012-02-01 или до 2012-02-24 и т. Д. Если вы это сделаете, проверьте ответы, если они соответствуют вашей идее. –

ответ

11

Это даст разницу между месяцами:

int months = (Date2.Year - Date1.Year) * 12 + Date2.Month - Date1.Month; 
+2

Это возможный ответ, в зависимости от того, что фактически хочет OP. Например, это вернет 1 для MonthBetween (2012-06-01, 2012-05-31), что может быть или не быть тем, чего хочет OP. – CodesInChaos

+0

Это, однако, не учитывает день месяца. Например, он будет давать такое же количество месяцев с 31 мая по 1 июня с 1 мая по 31 июня. Я не думаю, что многие люди ожидали такого результата. –

+0

@ Jon Skeet: Я очень сожалею о своем неясном вопросе. Я не хочу вообще учитывать день месяца, хотя из-за системных требований. Теперь я отредактировал свой вопрос. – lelewin

8

Мой Noda Time Проект предусматривает следующее:

LocalDate date1 = new LocalDate(2011, 11, 1); 
LocalDate date2 = new LocalDate(2012, 2, 1); 
Period period = Period.Between(date1, date2, PeriodUnits.Months); 
long months = period.Months; // 3 

Смотрите project documentation for arithmetic для получения дополнительной информации.

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