2012-05-31 18 views
8

İki tarih arasındaki Ay sayısını hesaplamayı öğrenmek istiyorum. C# içinde hesaplamak için herhangi bir yöntem var mı?İki tarih arasındaki ayın sayısını nasıl hesaplayabilirim? 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

nasıl hakkında birkaç test durumları? Sorununuz daha az belirgindir. İstediğiniz şeyi çözmenin, uygulamaktan daha zor olduğu problemlerden biri budur. – CodesInChaos

+3

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

+1

İlk önce, "iki tarih arasındaki ayların sayısı" ile ilgili net bir fikre sahip olmalısınız. 2012-01-25 ila 2012-02-01 veya 2012-02-24 gibi. İsterseniz, cevabınızı fikirlerinizle tutarlı olup olmadığını kontrol edin. –

cevap

11

Bu ay arasındaki farkı verecek:

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

Bu OP'nin gerçekte ne istediğine bağlı olarak olası bir cevaptır. Örneğin, bu, OP'nin istediği şey olabilir veya olmayabilir, Ay için Ara 1 (2012-06-01, 2012-05-31) 1 döndürecektir. – CodesInChaos

+0

Bu, ayın gününü hesaba katmaz. Örneğin, 31 Mayıs - 1 Haziran arasında 1 Mayıs - 31 Haziran tarihleri ​​arasında aynı sayıda ay verecektir. Birçok insanın bu sonucu bekleyeceğini sanmıyorum. –

+0

@Jon Skeet: Belirsiz sorularım için çok üzgünüm. Sistem gereksinimleri nedeniyle ayın gününü hesaba katmak istemiyorum. Şimdi sorumu düzenledim. – lelewin

8

Benim Noda Time proje bunun için sağlamaktadır:

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 

fazla bilgi için project documentation for arithmetic bakınız.

İlgili konular