Timespan包含飞跃

我有两个日期,一个开始(1/1/15)结束(31/12/16)

我需要从总金额(20,000)和每年365天的金额计算每日金额,

我使用Timespan获取开始日期和结束日期之间的天数,但在这种情况下,由于2006年是闰年,所以返回731(365 + 366)

但我需要的是在没有闰日的情况下获得730,有没有这样做的方法

谢谢Aj


也许有一种更高效的方法,但是这种方式按预期工作:

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

链接地址: http://www.djcxy.com/p/18539.html

上一篇: Timespan contains leapyear

下一篇: How to smartly convert a number of seconds in a date