案例陈述中的日期比较

时间:2015-03-12 08:54:46

标签: ruby

请帮助我知道,为什么输出总是其他部分,即使第一个条件得到满足

  def date_string(date)
    case date
    when date.to_date == Date.today
      "Today"
    when date.to_date == (Date.today - 1.day)
      "Yesterday"
    else
      date.strftime("%dth %B %Y")
    end
  end

我错过了什么?

3 个答案:

答案 0 :(得分:4)

您错误地使用了case语句。它应该是:

case date.to_date
when Date.today
  'Today'
when Date.yesterday
  'Yesterday'
else
  date.strftime('%dth %B %Y')
end

答案 1 :(得分:2)

您目前正在做的事情是比较" date"的值。结果为" date.to_date == Date.today",这是一个布尔值。类似于:" date.to_date == true?"

所以你可以:

case date.to_date
when Date.today 
then ...

......或......

case
when date.to_date == Date.today
then ..,

答案 2 :(得分:2)

我可能会在几天内使用差异:

case date.to_date - Date.today
when 0
  'Today'
when -1
  'Yesterday'
else
  date.strftime('%dth %B %Y')
end