2つの日付の日数の違いを見つける必要があります。
例えば:
入力:**startDate** = 12-31-2012 23hr:59mn:00sec, **endDate** = 01-01-2013 00hr:15mn:00sec
期待される出力:1
私は次のことを試しました:
(dt1-dt2).TotalDays
そして整数に変換しますが、doubleをintに変換する必要があるため、適切な答えが得られませんでした-Math.Ceiling、Convert.To..を試してみました。dt1.day - dt2.day
数ヶ月間は機能しませんdt.Substract()
上記のオプション1と同じ出力があります。
上記のどれもうまくいかなかったので、私は次のコードを書くことになりました。コードはうまく機能しますが、数行のコードだけで解決策が必要だと思います。
public static int GetDifferenceInDaysX(this DateTime startDate, DateTime endDate)
{
//Initializing with 0 as default return value
int difference = 0;
//If either of the dates are not set then return 0 instead of throwing an exception
if (startDate == default(DateTime) | endDate == default(DateTime))
return difference;
//If the dates are same then return 0
if (startDate.ToShortDateString() == endDate.ToShortDateString())
return difference;
//startDate moving towards endDate either with increment or decrement
while (startDate.AddDays(difference).ToShortDateString() != endDate.ToShortDateString())
{
difference = (startDate < endDate) ? ++difference : --difference;
}
return difference;
}
注:最大差は30〜45日を超えないため、whileループの反復でパフォーマンスの問題は発生しません。