Ruby,检查日期是否是周末?

时间:2012-08-11 11:45:50

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

我的rails应用程序中有一个DailyQuote模型,它对于股票有日期价格。已为此模型捕获数据库中的数据,包括周末。周末价格值已设为0.

我希望将周六和周日的所有周末价格改为星期五的价格。在Ruby中执行此操作的最佳方法是什么?要确定日期是星期六还是星期日,并将其值更改为该周末的星期五?

6 个答案:

答案 0 :(得分:47)

TFM显示了识别星期几的有趣方法:

t = Time.now
t.saturday?    #=> returns a boolean value
t.sunday?      #=> returns a boolean value

答案 1 :(得分:16)

require 'date'
today = Date.today
ask_price_for = (today.wday == 6) ? today - 1 : (today.wday == 0) ? today - 2 : today

require 'date'
today = Date.today
ask_price_for = (today.saturday?) ? today - 1 : (today.sunday?) ? today - 2 : today  

ask_price_for现在拥有您想要询问价格的日期。

获取与您的日期对应的实际价格取决于您的型号和您的ORM库(即ActiveRecord)。

答案 2 :(得分:15)

最简单的方法:

today = Date.today

if today.saturday? || today.sunday? 
  puts "Today is a weekend!"
end

您也可以在一周中的任何其他日子执行此操作。 Ruby非常棒,并且提供了许多很酷的方法。我建议当你感到难过时,通过在它上面运行.methods来查看该课程的可用内容。因此,如果您运行Date.today.methods,您会看到这些可用。

答案 3 :(得分:14)

class Time
  def is_weekend?
    [0, 6, 7].include?(wday)
  end
end

time = Time.new

puts "Current Time : " + time.inspect
puts time.is_weekend?

答案 4 :(得分:0)

weekend_days = [0,6]
if (self.start_date.to_date..self.end_date.to_date).to_a.select {|k| weekend_days.include?(k.wday)}.present?
  # you code
end

答案 5 :(得分:0)

由于Rails v5:

Date.current.on_weekend?

参考: