isSameWeek method
Checks if two DateTime instances are in the same week.
startsWithMonday determines which day starts the week:
true- Week starts on Monday (ISO 8601 standard, default)false- Week starts on Sunday
Example usage:
final date1 = DateTime(2020, 1, 1);
final date2 = DateTime(2020, 1, 5);
print(date1.isSameWeek(date2)); // true (Monday start)
print(date1.isSameWeek(date2, startsWithMonday: false)); // check with Sunday start
Implementation
bool isSameWeek(DateTime b, {bool startsWithMonday = true}) {
final a = DateTime.utc(year, month, day);
final adjustedB = DateTime.utc(b.year, b.month, b.day);
final diff = a.difference(adjustedB).inDays;
if (diff.abs() >= 7) {
return false;
}
final aBeforeB = a.isBefore(adjustedB);
final min = aBeforeB ? a : adjustedB;
final max = aBeforeB ? adjustedB : a;
if (startsWithMonday) {
return min.weekday <= max.weekday;
} else {
final minWeekday = min.weekday % 7;
final maxWeekday = max.weekday % 7;
return minWeekday <= maxWeekday;
}
}