2009-08-14 10 views
1

列車が今から1時間足らずになると、スケジュール表の行が赤く強調表示されます。現在、私はこのような計算をやってる:Railsで「1時間未満」を表現する最善の方法は?

if Time.zone.now + 1.hour > t[from_station] 
    # do whatever 
end 

これは動作し、種類の意味がありますが、私はこれを表現するための明確な/より多くの慣用的な方法があるかどうか疑問が(私はこのコードに戻ってくる想像できます数ヶ月、精神的にはTime.zone.now + 1.hourを解析するために一時停止する必要があります)。

答えて

11

あなたはfrom_now使用することができます

if t[from_station] < 1.hour.from_now 

Time.zone.nowを使用して、あなたがそうsinceはおそらくより読みやすいですが、それを指定する必要があります(from_nowsinceに単なるエイリアスです):

if t[from_station] < 1.hour.since(Time.zone.now) 
+0

素晴らしい答え。 Railsアプリケーションのデフォルトのタイムゾーン(environment.rbで定義されている)を使って '1hour.from_now'(これを表現する最も正しい方法のように思える)を作る方法はありますか? –

+1

'from_now'は単一の引数をとります。デフォルトでは 'Time.now'を使います。もちろん、 'since'と同じように' Time.zone.now'を渡すことができます(実際は同じメソッドです)。 'Time.now'が正しいタイムゾーンに設定されるようにする(引数を与えなくてもすむように)ためには、' ENV ['TZ'] '(または' TZ'環境変数)を正しいタイムゾーンも。 – Pesto

関連する問題