Используйте диапазоны:
case time
when (Time.now - 60)..(Time.now) then puts 'within the last minute'
when (Time.now - 3600)..(Time.now) then puts 'within the last hour'
end
Диапазоны работают со всеми видами значений. Вы также можете использовать Date
s:
case date
when (Date.today - 1)..(Date.today) then puts 'less than a day ago'
when (Date.today - 30)..(Date.today) then puts 'less than a month ago'
end
Обновление: Ruby 1.9 нарушил временные диапазоны, поэтому этот пример работает только в Ruby 1.8.7. Пример Date работает в обеих версиях. В 1.9 вы можете использовать этот код для соответствия времени:
case time.to_i
when ((Time.now - 60).to_i)..(Time.now.to_i) then puts 'within the last minute'
when ((Time.now - 3600).to_i)..(Time.now.to_i) then puts 'within the last hour'
end