next method

CronTime next([
  1. DateTime? startAt
])

Implementation

CronTime next([DateTime? startAt]) {
  var _date = _defaultDateTime(startAt);

  if (seconds?.isNotEmpty == true) {
    _date = _date.add(Duration(seconds: 1));
  } else {
    _date = _date.add(Duration(minutes: 1));
  }

  while (true) {
    if (months?.isNotEmpty == true &&
        _months.contains(_date.month) == false) {
      _date = _inc(_date, _DateTimeSegment.month);
      continue;
    }

    if (daysOfWeek?.isNotEmpty == true &&
        _daysOfWeek.contains(_date.weekday) == false) {
      _date = _inc(_date, _DateTimeSegment.day);
      continue;
    }

    if (daysOfMonth?.isNotEmpty == true &&
        _daysOfMonth.contains(_date.day) == false) {
      _date = _inc(_date, _DateTimeSegment.day);
      continue;
    }

    if (hours?.isNotEmpty == true && _hours.contains(_date.hour) == false) {
      _date = _inc(_date, _DateTimeSegment.hour);
      continue;
    }

    if (minutes?.isNotEmpty == true &&
        _minutes.contains(_date.minute) == false) {
      _date = _inc(_date, _DateTimeSegment.minute);
      continue;
    }

    return CronTime(time: _date, schedule: this);
  }
}