getDateRange function

List<DateTime> getDateRange(
  1. DateTime start,
  2. DateTime end
)

Gets all dates between two dates (inclusive).

start - The start date of the range. end - The end date of the range.

Returns a list of DateTime objects for each day in the range. Time components are normalized to 00:00:00.

Example:

final start = DateTime(2024, 1, 15);
final end = DateTime(2024, 1, 18);
final range = getDateRange(start, end);
print(range.length); // 4 (includes both start and end)

Implementation

List<DateTime> getDateRange(DateTime start, DateTime end) {
  final days = <DateTime>[];
  var current = DateTime(start.year, start.month, start.day);
  final endDate = DateTime(end.year, end.month, end.day);

  while (!current.isAfter(endDate)) {
    days.add(current);
    current = current.add(const Duration(days: 1));
  }

  return days;
}