我的目标是找出两个日期之间的差异,然后将该天数添加到原始日期。
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上添加一年,而不是因为闰年而增加的一天。
答案 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);