2 つの整数列を使用して、データベース内に開始時間と期間を格納します。
両方の値を取得することで、開始時間を次のように変換できます (その日がすでにわかっていると仮定すると、次のようになります。
# assuming date is the date of the day, datetime will hold the start time
datetime = date.change({:hour => your_stored_hour_value , :min => 0 , :sec => 0 })
# calculating the end time
end_time = datetime + your_stored_duration.seconds
それ以外の場合は、Chronicをご覧ください。この宝石は、取り扱い時間を少し楽にします。このchange
メソッドは Rails の一部であり、プレーンな Ruby では使用できないことに注意してください。
DateTime
プレーン Rubyのドキュメントは、ここにあります。
また、何をするにしても、日付/時刻を 12 時間形式で保存しないでください。RailsI18n
で時刻を変換するために使用できます。
I18n.l Time.now, :format => "%I.%m %p", :locale => :"en"
I18n.l Time.now + 12.hours, :format => "%I.%m %p", :locale => :"en"
この表記法から、期間を時間単位で保存できることもわかります。必要に応じて、次の方法で簡単に変換できます。
your_stored_value.hours
整数として格納されている場合、つまり。