1

開始日 (1/1/15) と終了日 (31/12/16) の 2 つの日付があります。

合計金額(20,000)と365日ベースの年間金額から1日あたりの金額を計算する必要があり、

Timespan を使用して開始日と終了日の間の日数を取得していますが、この場合、2006 年はうるう年であるため、731 (365 + 366) を返します。

しかし、うるう日なしで730を取得する必要があります。これを行う方法はありますか

ありがとうアジ

4

1 に答える 1

1

おそらくもっと効率的なアプローチがありますが、これは期待どおりに機能します。

public static int DaysDiffMinusLeapYears(DateTime dt1, DateTime dt2)
{
    DateTime startDate = dt1 <= dt2 ? dt1.Date : dt2.Date;
    DateTime endDate = dt1 <= dt2 ? dt2.Date : dt1.Date;
    int days = (endDate - startDate).Days + 1;

    int daysDiff = Enumerable.Range(0, days)
        .Select(d => startDate.AddDays(d))
        .Count(day => day.Day != 29 || day.Month != 2);
    return daysDiff;
}

あなたのサンプル:

int days = DaysDiffMinusLeapYears(new DateTime(15, 1, 1), new DateTime(16,12,31));

結果: 730

于 2015-02-05T08:55:28.597 に答える