ruby-on-rails - 如何回到前一天?

标签 ruby-on-rails algorithm datetime time activeadmin

在我的 activeadmin 上,我必须给出每家商店的开门和关门时间。 例如,如果商店从晚上 9 点营业到凌晨 4 点,则记录为同一天。 但是我的算法出了问题

我的算法是:

  def opened?
    today_day = Date.today.wday
    yesterday_day = today_day == 0 ? 6 : (today_day - 1)
    opening = self.openings.where(day: [today_day, yesterday_day]).first
    if opening
      opening_day = (Time.now).day
      if opening.closes_at < opening.opens_at
        opening_day = yesterday_day
      end
      # binding.pry
      today_opens_at = Time.new((Time.now).year, (Time.now).month, opening_day, opening.opens_at.hour, opening.opens_at.min)
      today_closes_at = Time.new((Time.now).year, (Time.now).month, (Time.now).day, opening.closes_at.hour, opening.closes_at.min)
      if today_opens_at < (Time.now) && (Time.now) < today_closes_at
        true
      else
        false
      end
    else
      false
    end
  end

我尝试为“1.day”添加 gem activesupport,但出现错误“参数超出范围” 我没有找到解决方案,你能帮帮我吗?

最佳答案

yerderday_day 必须是一个月中的某一天 (0..30)

     today_day_of_week = Date.today.wday
     yesterday_day_of_week = today_day_of_week == 0 ? 6 : (today_day_of_week - 1)
     opening = self.openings.where(day: [today_day_of_week, yesterday_day_of_week]).first
     yesterday_day = Date.today.prev_day.day

或者只是替换这个 block :

  if opening.closes_at < opening.opens_at
    opening_day = Date.today.prev_day.day
  end

关于ruby-on-rails - 如何回到前一天?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29126222/

相关文章:

java - 是否可以将 Rails 应用程序编译为 Java VM JAR 文件?

ruby-on-rails - marshal 数据太短

javascript - 在给定的时间间隔内找到最短的二进制字符串

algorithm - 当时间复杂度根据 n 为偶/奇而变化时,算法 S 的最佳和最坏情况时间

javascript - 是否可以使 HTML datetime-local 元素仅生成有效日期?

python - 如何根据 IntervalIndex 对跳过的日期时间的值求和?

javascript - 如何使用引导表导出扩展

ruby-on-rails - 在 Rails 中使用 AES 密码 block 链接解密字符串

algorithm - Quicksort 算法中的递归如何工作?

python 错误: AttributeError: 'datetime.datetime' object has no attribute 'split'