2011-01-23 11 views
1

月の2つの日付の違いを得る方法はありますか? 私はその日の10進数を希望します。Asp.net月の2つの日付と左の日の小数点の差を取得します

EX:

First Date : 2010-12-20 
Second Date : 2011-12-30 

これは、これらの日の間に1ヶ月と10日のようなものです。

違いは私を与える必要があります。1.33

DateTime dt = new DateTime(); 
dt = Convert.ToDateTime("2011-12-30"); ; 

DateTime dt2 = new DateTime(); 
dt2 = Convert.ToDateTime("2010-12-20"); 

int monthDiff = System.Data.Linq.SqlClient.SqlMethods.DateDiffMonth(dt,dt2); 

答えて

1

あなたが最初に全体の月数をうまくする必要があります。次に、1か月の分数として日を追加します。私たちは月に30日間で作業する場合、それは次のようになります。

int wholeMonthsDiff = ((date2.Year * 12) + date2.Month) - ((date1.Year * 12) + date1.Month); 
if (date2.Day < date1.Day) 
    wholeMonthsDiff--; 
var diff = date2 - date1.AddMonths(wholeMonthsDiff); 
double monthsDifference = wholeMonthsDiff + (diff.Days/30d); 
+0

THanks、これは私が欲しいものです。 –

+0

月がそれぞれ30日でないことが残念です。断続的なコーディングの不正確さが導入されると仮定すると、 – GlennG

1

(C#を使用する場合にも)あなたはVisualBasicの-名前空間からDateDiffを使用することができます。

VB.Net

Dim monthsTotal As Double = DateDiff("m", dt, dt2) + _ 
          (dt2.Day - dt.Day)/DateDiff("d", dt2, DateAdd("m", 1, dt2)) 

C#

double monthsTotal = DateAndTime.DateDiff("m", dt, dt2) + (dt2.Day - dt.Day)/DateAndTime.DateDiff("d", dt2, DateAndTime.DateAdd("m", 1, dt2)); 

Btw、あなたの例の日付の違いは1年10日ではなく、1月10日です。

+0

はい、あなたは絶対に正しいです。 –

関連する問題