datesInRange method

Iterable<DateTime> datesInRange (DateTime start, DateTime end)

Returns a DateTime for each day the given range.

start is inclusive and end is exclusive

Implementation

static Iterable<DateTime> datesInRange(DateTime start, DateTime end) sync* {
  var i = start;
  var offset = start.timeZoneOffset;
  while (i.isBefore(end)) {
    yield i;
    i = i.add(new Duration(days: 1));
    var timeZoneDiff = i.timeZoneOffset - offset;
    if (timeZoneDiff.inSeconds != 0) {
      offset = i.timeZoneOffset;
      i = i.subtract(new Duration(seconds: timeZoneDiff.inSeconds));
    }
  }
}