setWeekDay method

DateTime setWeekDay(
  1. int weekday, [
  2. int weekStartsOn = DateTime.sunday
])

Change weekday of this date

set weekStartsOn if you want to use any other day as the start of the week

Implementation

DateTime setWeekDay(int weekday, [int weekStartsOn = DateTime.sunday]) {
  const daysPerWeek = DateTime.daysPerWeek;
  final currentDay = this.weekday;
  final reminder = weekday % daysPerWeek;
  final dayIndex = (reminder + daysPerWeek) % daysPerWeek;
  final delta = daysPerWeek - weekStartsOn;
  final diff = weekday < 0 || weekday > 6
      ? weekday - ((currentDay + delta) % daysPerWeek)
      : ((dayIndex + delta) % daysPerWeek) -
          ((currentDay + delta) % daysPerWeek);

  return addDays(diff);
}