将两个日期的差异添加到另一个日期,避免闰年

时间:2017-03-09 14:33:00

标签: c# date datetime

我的目标是找出两个日期之间的差异,然后将该天数添加到原始日期。

DateTime originalStart = new DateTime(2015, 1, 1);
DateTime newDate = originalStart.AddDays((endDate - startDate).TotalDays);

例如使用以下参数:
原始开始时间:2015年1月1日
开课日期:2016年1月1日 结束日期:1/1/2017

newDate应该是: 2016年1月1日(开始和结束之间的差异是1年,所以我们将这一年添加到原始开始)

我的问题是,如果闰年是endDate和startDate之间的日期差异的一部分,那么我将这些天添加到originalStart。对于newDate,我最终会像1/2/2016这样的日期。

我知道如何避免闰年,以确保1/1/2016和1/1/2017之间的差异是否四舍五入。我只想在originalStart上添加一年,而不是因为闰年而增加的一天。

1 个答案:

答案 0 :(得分:0)

   DateTime originalStart = new DateTime(2015, 1, 1);
    DateTime zeroTime = new DateTime(1, 1, 1);
    DateTime endDate = new DateTime(2016, 1,1);
    endDate .Dump();
    DateTime startDate= new DateTime(2017, 1,1);
    startDate.Dump();

    TimeSpan span = startDate- endDate ;

    // because we start at year 1 for the Gregorian 
    // calendar, we must subtract a year here.

    int years = (zeroTime + span).Year - 1;
    int months = (zeroTime + span).Month - 1;
    int days = (zeroTime + span).Day;

    years.Dump();
    months.Dump();
    days.Dump();
originalStart= originalStart.AddMonths(months);
originalStart = originalStart.AddYears(years);
originalStart = originalStart.AddDays(days);