class Fugit::Cron

def previous_time(from=::EtOrbi::EoTime.now)

def previous_time(from=::EtOrbi::EoTime.now)
  from = ::EtOrbi.make_time(from)
  i = 0
  t = TimeCursor.new(self, (from - 1).translate(@timezone))
  loop do
    fail RuntimeError.new(
      "too many loops for #{@original.inspect} #previous_time, breaking, " +
      "cron expression most likely invalid (Feb 30th like?), " +
      "please fill an issue at https://git.io/fjJCQ"
    ) if (i += 1) > MAX_ITERATION_COUNT
= t.time;
s "  #{tt.strftime('%F %T %:z %A')} #{tt.rweek} #{tt.rweek % 4}"
    month_match?(t) || (t.dec_month; next)
    day_match?(t) || (t.dec_day; next)
    hour_match?(t) || (t.dec_hour; next)
    min_match?(t) || (t.dec_min; next)
    sec_match?(t) || (t.dec_sec; next)
    break
  end
  t.time.translate(from.zone)
end