Ruby следующий запуск через X минут - PullRequest
1 голос
/ 12 сентября 2011

У меня есть приложение ruby ​​on rails, и на заднем плане работает cron.Задание cron выполняется каждые 10 минут по 10 минут, например, 9:00, 9:10, 9:20, 9:30 и так далее.В моем приложении rails я хочу показать, когда cron будет запущен в следующий раз.

Итак, у меня будет «Cron будет работать в 9:20 PM»

Я просто не могу понятькак получить это в рубине.

Спасибо, Андрей

Ответы [ 3 ]

3 голосов
/ 12 сентября 2011
def next_10_minutes
  nxt = Time.now+(10-Time.now.min%10).minute
  nxt.strftime("%H:%M")
end

next_10_minutes
#=> "00:30"

или немного более гибкий и исправление обезьян

class Time
  def self.next_10_minutes
    self.now+(10-Time.now.min%10).minute
  end
end

Time.next_10_minutes.strftime("%H:%M")
#=> "00:40"
1 голос
/ 12 сентября 2011

Это довольно просто:

  • получить текущие минуты: min = DateTime.now.min
  • округление до десяти верхних минут:

    nextTick = ((min/10.0).ceil*10)
    
  • выведите разницу:

    diff = nextTick - min
    hour = DateTime.now.hour
    if nextTick == 60
        nextTick = 0
        hour = (hour + 1) % 24
    end
    print "Next run in #{diff} minutes (at #{hour}:#{nextTick})"
    

Попробуйте здесь: http://codepad.org/5vxlg6kF

0 голосов
/ 12 сентября 2011
def next_tick(now)
    min10 = ((now.min / 10) + 1)*10
    if min10 == 60
        Time.mktime(now.year, now.month, now.day, now.hour + 1, 0)
    else
        Time.mktime(now.year, now.month, now.day, now.hour, min10)
    end
end

p next_tick(Time.now)
...