private int CalcMonths()
{
if ( TimeCompare.IsSameDay( date1, date2 ) )
{
return 0;
}
int compareDay = date2.Day;
int compareDaysPerMonth = calendar.GetDaysInMonth( Year1, Month1 );
if ( compareDay > compareDaysPerMonth )
{
compareDay = compareDaysPerMonth;
}
DateTime compareDate = new DateTime( Year1, Month1, compareDay,
date2.Hour, date2.Minute, date2.Second, date2.Millisecond );
if ( date2 > date1 )
{
if ( compareDate < date1 )
{
compareDate = compareDate.AddMonths( 1 );
}
}
else
{
if ( compareDate > date1 )
{
compareDate = compareDate.AddMonths( -1 );
}
}
return
( ( Year2 * TimeSpec.MonthsPerYear ) + Month2 ) -
( ( calendar.GetYear( compareDate ) * TimeSpec.MonthsPerYear ) + calendar.GetMonth( compareDate ) );
}