isWeekInYear static method

  1. @visibleForTesting
bool isWeekInYear(
  1. DateTime date,
  2. int year,
  3. int? firstWeekday
)

Checks if week, that contains date is in year.

Implementation

@visibleForTesting
static bool isWeekInYear(DateTime date, int year, int? firstWeekday) {
  const requiredDaysInYear = 4;
  final startWeekDate = firstDayOfWeek(date, firstWeekday: firstWeekday);
  final endWeekDate = lastDayOfWeek(date, firstWeekday: firstWeekday);

  if (startWeekDate.year == year && endWeekDate.year == year) {
    return true;
  } else if (endWeekDate.year == year) {
    final startYearDate = DateTime(year, DateTime.january, 1);
    final daysInPrevYear = getDaysDifference(startYearDate, startWeekDate);
    return daysInPrevYear < requiredDaysInYear;
  } else if (startWeekDate.year == year) {
    final startNextYearDate = DateTime(year + 1, DateTime.january, 1);
    final daysInNextYear =
        getDaysDifference(endWeekDate, startNextYearDate) + 1;
    return daysInNextYear < requiredDaysInYear;
  } else {
    return false;
  }
}