给定一个日期,如何查找是否是该月的第二个或第四个星期六

时间:2017-02-02 08:39:28

标签: ruby date ruby-on-rails-4

在我的Rails应用程序中,我需要查找给定日期是否是该月的第二个或第四个星期六。有效的方法是什么?我有可以使用的宝石吗?

3 个答案:

答案 0 :(得分:4)

第二个星期六必须是8-14天,第二个星期六是22-28。所以我认为这应该有用

def second_or_forth_saturday?(date)
  return false unless date.saturday?
  (8..14).include?(date.day) || (22..28).include?(date.day)
end

答案 1 :(得分:3)

  • 第1天到第7天是第0周
  • 第8天至第14天是第1周
  • 第15天至第21天是第2周
  • 第22天至第28天是第3周

要获取周ID,我们可以计算(date.day-1)/7。由于id是从零开始的,所以第二个和第四个星期六有一个奇数周ID:

def second_or_fourth_saturday?(date)
  date.saturday? && ((date.day - 1) / 7).odd?
end

答案 2 :(得分:2)

def fourth_saturday?(date)
  saturdays = (date.beginning_of_month..date.end_of_month).select { |date| date.wday == 6 }
  [satudays.second, saturdays.fourth].include?(date)
end
  1. 创建月份日期范围
  2. 选择星期六
  3. 请参阅,如果第二或第四个星期六等于日期
  4. 正如@Stefan建议的那样,该方法的第一行可以写成如下(使用all_month):

    saturdays = date.all_month.select(&:saturday?)
    

    参考文献: