Ruby 下一次运行将在 X 分钟后完成

发布于 2024-12-04 04:51:59 字数 223 浏览 1 评论 0原文

我有一个 ruby​​ on Rails 应用程序,并且有一个 cron 在后台运行。 cron 作业在 10 分钟每 10 分钟运行一次,因此 9:00、9:10、9:20、9:30 等等。 在我的 Rails 应用程序中,我想显示 cron 下次运行的时间。

所以我会说,“Cron 接下来将在晚上 9:20 运行”,

我只是不知道如何在 ruby​​ 中得到它。

谢谢, 安德鲁

I have a ruby on rails app, and there is a cron running in the background.
The cron job runs every 10 minutes on the 10 minutes, so 9:00, 9:10, 9:20, 9:30 and so on.
In my rails app, I want to show when the cron will next run.

So I will have, "Cron will next run at: 9:20PM"

I just can't figure out how to get this in ruby.

Thanks,
Andrew

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

零度℉ 2024-12-11 04:51:59
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"
def next_10_minutes
  nxt = Time.now+(10-Time.now.min%10).minute
  nxt.strftime("%H:%M")
end

next_10_minutes
#=> "00:30"

or little more flexible and monkey patching

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"
心的位置 2024-12-11 04:51:59

这非常简单:

  • 获取当前分钟:min = DateTime.now.min
  • 四舍五入到上十分钟:

    nextTick = ((min/10.0).ceil*10)
    
  • 打印差异:

    diff = nextTick - 分钟
    小时 = DateTime.now.hour
    如果下一个Tick == 60
        下一个刻度 = 0
        小时 = (小时 + 1) % 24
    结尾
    print“下一次运行将在 #{diff} 分钟后运行(在 #{hour}:#{nextTick})”
    

在这里尝试一下:http://codepad.org/5vxlg6kF

This is quite simple:

  • get the current minutes: min = DateTime.now.min
  • round to the upper ten minute:

    nextTick = ((min/10.0).ceil*10)
    
  • print the difference:

    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})"
    

Try it here: http://codepad.org/5vxlg6kF

听不够的曲调 2024-12-11 04:51:59
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)
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)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文