您的公式計算receivedDate的第一個月到dueDate的第一個月之間的月數。由於TimeSpan中的大多數時間元素都表達爲TotalXXX,所以他們遺漏了TotalMonths和TotalYears似乎很奇怪。
我認爲這是因爲每個月都沒有固定的天數,所以很難知道如何表達分數餘數。
我的公式是這樣的......
int nMonthDiff_FirstToFirst = DateTime.Now.Month - testDate.Month + ((DateTime.Now.Year - testDate.Year)* 12);
double dMonthDiff = (double)nMonthDiff_FirstToFirst + (DateTime.Now - testDate.AddMonths(nMonthDiff_FirstToFirst)).TotalDays/(double)DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month);
所以我做的是基本上得到月份差像你(當月的第一天至當月的第一天),那麼,什麼項目我我testDate成未來按月份差異。然後用那個TimeSpan我得到TotalDays並且除以那個月的天數。因此,我以月份的剩餘天數表示小數部分。
所以如果你要去2012年5月5日 - > 2012年6月3日,你的公式將返回1爲月份的差異,當一整個月還沒有通過。在我的公式中,預計日期的總日數會產生負數的小數天數,並且在添加到「第一個到第一個」月份的差異時,它會根據需要採用。
來源
2012-05-22 16:07:42
AJB
不明白'樂觀/悲觀'的東西。兩個日期之間的月數是否定義爲「兩個日期之間有一天或多天的月數,包括」?在這種情況下,不會有一個正確的答案。 – mackenir 2009-04-20 15:45:32