isSameWeek method

bool isSameWeek(
  1. DateTime b, {
  2. bool startsWithMonday = true,
})

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;
  }
}