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

Gen*_*l_9 26 ruby ruby-on-rails ruby-on-rails-3

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

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

小智 49

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

t = Time.now
t.saturday?    #=> returns a boolean value
t.sunday?      #=> returns a boolean value
Run Code Online (Sandbox Code Playgroud)

  • 实际上Rails提供了`on_weekend?`方法.`Time.now.on_weekend?#=>如果是星期六或星期日那么真.另外,`on_weekday?`则相反. (5认同)

rob*_*tus 18

require 'date'
today = Date.today
ask_price_for = (today.wday == 6) ? today - 1 : (today.wday == 0) ? today - 2 : today
Run Code Online (Sandbox Code Playgroud)

要么

require 'date'
today = Date.today
ask_price_for = (today.saturday?) ? today - 1 : (today.sunday?) ? today - 2 : today  
Run Code Online (Sandbox Code Playgroud)

ask_price_for 现在有一个您想要询问价格的日期.

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

  • 你可以为此执行`Date.today.on_weekend?`. (4认同)

hea*_*iti 17

最简单的方法:

today = Date.today

if today.saturday? || today.sunday? 
  puts "Today is a weekend!"
end
Run Code Online (Sandbox Code Playgroud)

您也可以在一周中的任何其他日子执行此操作.Ruby非常棒,并且提供了许多很酷的方法.我建议你在难过的时候通过运行来看看课程的可用性.methods.所以,如果你跑步,Date.today.methods你会看到这些可用.


pet*_*ter 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?
Run Code Online (Sandbox Code Playgroud)


est*_*ani 8

自 Rails v5 起:

Date.current.on_weekend?
Run Code Online (Sandbox Code Playgroud)

参考:


caf*_*fe_ 5

Date.today.instance_eval { 星期六?|| 星期日?}