2012-05-31 99 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

雖然這並不需要考慮當月的日子。例如,在5月31日至6月1日期間,5月1日至6月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

相關問題