private static int ToDateTimeMonth( Calendar calendar, DateTime value ) { Contract.Requires( calendar != null ); Contract.Ensures( Contract.Result<int>() > 0 ); var epoch = calendar.FirstMonthOfYear(); var month = calendar.GetMonth( value ); var actual = ( epoch + month ) - 1; return actual > 12 ? ( actual - 12 ) : actual; }