weekEnd function
Returns the last day of the week in which date
is present. If date
is not
provided,the current day DateTime.now()
is considered.
var moonLanding = DateTime.parse("1969-07-20 20:18:04Z");
assert(weekEnd(date: moonLanding) == DateTime(1969, 7, 20, 23, 59, 59, 999));
assert(weekEnd(date: moonLanding).weekday == DateTime.sunday)
In accordance with ISO 8601 a week ends with Sunday.
By default the week will end with Sunday unless isMondayStartOfWeek
is set
to false then week ends with Saturday.
assert(weekEnd(date: moonLanding, isMondayStartOfWeek: false) ==
DateTime(1969, 7, 26, 23, 59, 59, 999),);
assert(weekEnd(date: moonLanding, isMondayStartOfWeek: false).weekday ==
DateTime.saturday,)
Implementation
DateTime weekEnd({DateTime? date, bool isMondayStartOfWeek = true}) {
date = date?.toLocal() ?? DateTime.now().toLocal();
var endOFWeek =
DateTime(date.year, date.month, date.day, 23, 59, 59, 999, 999);
var weekDay =
isMondayStartOfWeek ? endOFWeek.weekday : 1 + endOFWeek.weekday % 7;
endOFWeek = endOFWeek.add(
Duration(
days: 7 - weekDay,
),
);
return endOFWeek;
}