Frage

ich, was eine Zeit mit einer Case-Anweisung zu überprüfen. Wie zu tun?

War es hilfreich?

Lösung

Sie einfach die Version verwenden, die nicht eine definierte Variable an der Spitze hat ...

t = event.time  # arbitrary example.

case
when t <= Time.now
  # Event is in the past.
else
  # Event is in the future.
end

Andere Tipps

Verwenden Bereiche:

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

Bereiche arbeiten mit allen Arten von Werten. Sie können Dates verwenden auch:

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

Update: Ruby 1.9 brach Zeitbereiche, so dass beispielsweise nur in Ruby 1.8.7 funktioniert. Das Datum Beispiel funktioniert in beiden Versionen aber. In 1.9 können Sie diesen Code verwenden, um eine Zeit zu entsprechen:

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top