private int CompareDates(DateTime? focusedDate, DateTime? boundaryDate, bool isPrev)
{
if (!focusedDate.HasValue || !boundaryDate.HasValue)
return isPrev ? 1 : -1;
DateTime focusedDateValue = focusedDate.Value;
DateTime boundaryDateValue = boundaryDate.Value;
int result;
if (focusedDateValue.Year > boundaryDateValue.Year)
{
result = 1;
}
else if (focusedDateValue.Year < boundaryDateValue.Year)
{
result = -1;
}
else
{
result = focusedDateValue.Month == boundaryDateValue.Month ? 0
: focusedDateValue.Month > boundaryDateValue.Month ? 1
: -1;
}
return result;
}