isWeekInYear static method
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;
}
}