【问题标题】:Time between specified range指定范围之间的时间
【发布时间】:2012-04-02 02:03:11
【问题描述】:

我有一个在 Rails 服务器上运行的 cron 作业。当某些事件触发时,此 rake 任务向订阅者发出呼叫/短信。现在,当这个事件在晚上 10 点到早上 8 点之间触发时,我想将它存储在队列中,因为没有人喜欢在半夜被打扰。如何检查时间是否在 10 PM - 8 AM 窗口之间。

注意:每个用户都有自己的时区。我在数据库中拥有该时区

谢谢

【问题讨论】:

  • 目前我正在使用包含其间所有小时的数组来检查这一点。即hour_array = %w(22 23 0 1 2 3 4 5 6 7)store_in_queue if hour_array.include?(Time.now.utc.hour.to_s)有更好的方法吗?

标签: ruby ruby-on-rails-3 datetime time


【解决方案1】:
# here "-07:00" is example of user's timezone offset 
if Time.now.getlocal("-07:00").hour.between?(8, 22) 
  #then we send
else
  #we don't send
end

【讨论】:

    【解决方案2】:

    也许像...

    def night_time?(t)
      t.hour > 22 || t.hour < 8
    end
    

    可以使用:

    store_in(queue) if not night_time?(@time)
    

    【讨论】:

      猜你喜欢
      • 2012-08-25
      • 1970-01-01
      • 1970-01-01
      • 2012-04-07
      • 1970-01-01
      • 1970-01-01
      • 2016-09-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多