我的rails应用程序中有一个DailyQuote模型,它对于股票有日期和价格。已为此模型捕获数据库中的数据,包括周末。周末价格值已设为0.
我希望将周六和周日的所有周末价格改为星期五的价格。在Ruby中执行此操作的最佳方法是什么?要确定日期是星期六还是星期日,并将其值更改为该周末的星期五?
答案 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)