calculateMaxWeeksNumberMonthly static method

int calculateMaxWeeksNumberMonthly(
  1. DateTime startDate,
  2. DateTime endDate
)

Implementation

static int calculateMaxWeeksNumberMonthly(
    DateTime startDate, DateTime endDate) {
  final int monthsNumber = calculateMonthsDifference(startDate, endDate);

  final List<int> weeksNumbersMonthly = <int>[];

  if (monthsNumber == 0) {
    return _calculateWeeksNumber(startDate, endDate);
  } else {
    weeksNumbersMonthly
        .add(_calculateWeeksNumber(startDate, getLastDayOfMonth(startDate)));

    DateTime firstDateOfMonth = getFirstDayOfMonth(startDate);
    for (int i = 1; i <= monthsNumber - 2; i++) {
      firstDateOfMonth = firstDateOfMonth.add(const Duration(days: 31));
      weeksNumbersMonthly.add(_calculateWeeksNumber(
          firstDateOfMonth, getLastDayOfMonth(firstDateOfMonth)));
    }

    weeksNumbersMonthly
        .add(_calculateWeeksNumber(getFirstDayOfMonth(endDate), endDate));

    weeksNumbersMonthly.sort((int a, int b) => b.compareTo(a));
    return weeksNumbersMonthly[0];
  }
}