2017-11-18 10 views
0

現在の時刻が正午(昼食)後であるかどうかを確認しようとしています。Rubyでタイムゾーンの時間差を計算する方法

noon_time = Time.parse "12:00 pm" 
    current_time = Time.now 
    if current_time < noon_time 
    #eat a big meal or sleep its after lunch time 
    else 
    #work hard its not time to eat 
    end 

このコードを午後9時38分に実行すると、「大きな食事を食べる」と表示されます。

このようなことをして、自分のウェブサイトにユーザーが設定した時間を取得する必要がありますか?

offset = Time.now.in_time_zone(current_user.time_zone).gmt_offset/60/60 

答えて

1

あなたは、ユーザーの視点からの時間を解析してみてください:

Time.zone(current_user.time_zone).parse("12:00pm") 

あなたは、おそらく、UTCであるデフォルトのタイムゾーンでそれを使用しているTime.now使用している場合。正しいタイムゾーンで時刻を返すUserモデルのラッパーメソッドtime_currentを作成することをお勧めしますか?分離されたオフセット自体は意味がありません。

またtime_parseと同じことを行うことができ、その後、あなたのコードは次のようになります。もっと簡潔

if current_user.time_current >= current_user.time_parse("12:00pm") 
    # ... Lunch time! 
end 

または:

if current_user.time_current.hour >= 12 
    # ... Lunch time! 
end