'Returns the next match after \'start\'.
Arguments:
start: a datetime to start from. Matches will start from after this time.
This may be in any pytz time zone, or it may be timezone-naive
(interpreted as UTC).
Returns:
a datetime object in the timezone of the input \'start\''

def GetMatch(self, start):

    if (self.start_time is None):
        result = (start + datetime.timedelta(seconds=self.seconds))
        return (result - datetime.timedelta(seconds=result.second))
    t = _ToTimeZone(start, self.timezone)
    start_time = self._GetPreviousDateTime(t, self.start_time, self.timezone)
    t_delta = (t - start_time)
    t_delta_seconds = (((t_delta.days * 60) * 24) + t_delta.seconds)
    num_intervals = ((t_delta_seconds + self.seconds) / self.seconds)
    interval_time = (start_time + datetime.timedelta(seconds=(num_intervals * self.seconds)))
    if self.timezone:
        interval_time = self.timezone.normalize(interval_time)
    next_start_time = self._GetNextDateTime(t, self.start_time, self.timezone)
    if (self._TimeIsInRange(t) and self._TimeIsInRange(interval_time) and (interval_time < next_start_time)):
        result = interval_time
    else:
        result = next_start_time
    return _ToTimeZone(result, start.tzinfo)
