totalWeekDayOrWeekEnd static method

int totalWeekDayOrWeekEnd(
  1. int year, {
  2. int month = 1,
  3. int day = 1,
  4. TypeWeek typeWeek = TypeWeek.isWeekday,
  5. TypeDateTotal typeDateTotal = TypeDateTotal.month,
})

Get total WeekDay or WeekEnd depend of type.

const year = 2021;

const month = 1;

const day = 1;

final totalWeekend2021 = GlobalFunction.totalWeekDayOrWeekEnd( year, month:month, day:day, typeDateTotal: TypeDateTotal.year typeWeek: TypeWeek.isWeekend );

print(totalWeekend2021) // 104

https://coda.io/@hales/simple-online-calculator-for-dates-and-times/how-many-weekends-in-a-year-31

Implementation

static int totalWeekDayOrWeekEnd(
  int year, {
  int month = 1,
  int day = 1,
  TypeWeek typeWeek = TypeWeek.isWeekday,
  TypeDateTotal typeDateTotal = TypeDateTotal.month,
}) {
  final totalDay = (typeDateTotal == TypeDateTotal.month)
      ? totalDaysOfMonth(year: year, month: month)
      : totalDayInRangeYear(fromYear: year, toYear: year);

  var weekDay = 0;
  var weekEnd = 0;

  final tempDateTime = DateTime(year, month, day);
  for (var i = day; i <= totalDay; i++) {
    final date = DateTime(tempDateTime.year, tempDateTime.month, i);
    if (date.weekday == DateTime.saturday ||
        date.weekday == DateTime.sunday) {
      weekEnd++;
      // print('weekEnd || $date');
    } else {
      weekDay++;
      // print('weekDay || $date');
    }
  }

  final result = (typeWeek == TypeWeek.isWeekend) ? weekEnd : weekDay;
  return result;
}