public static DateTime GetBudgetYearEndDateConsideringLeapYear(DateTime budgetYearStartDate)
{
DateTime endDate = DateTime.MinValue;
if (budgetYearStartDate == null)
throw new ArgumentNullException("budgetYearStartDate must be provided before calling this method");
int startingDateMonth = budgetYearStartDate.Month;
if (startingDateMonth > 2) /// Leap year for the starting year is escaped because Month is NOT February
{
endDate = budgetYearStartDate.AddDays(365);
bool isEndYearLeapYear = DateTime.IsLeapYear(endDate.Year);
if (isEndYearLeapYear)
{
return endDate.AddDays(1);
}
return endDate;
}
else // started from JAN/ FEB
{
if (DateTime.IsLeapYear(budgetYearStartDate.Year))
{
return budgetYearStartDate.AddDays(366);
}
return budgetYearStartDate.AddDays(365);
}
}
What am I missing here
How about
startDate.AddYears(1).AddDays(-1);?This assumes that given a start date of July 1, you want an end date of June 30. The example you posted suggests that you want July 1 -> July 1, in which case, it would be
startDate.AddYears(1);.