20 分 10 秒後の DateTime インスタンスを作成したいと考えています。irb で Time と DateTime を試してみましたが、本当に意味のある方法がわかりません。DateTime オブジェクトには日数しか追加できず、Time オブジェクトには秒数しか追加できません。
追加したい時間を常に秒に変換するよりも良い方法はないでしょうか?
ベストアンサー1
ATime
はエポックからの秒数ですが、aはDateTime
エポックからの日数です。そのため、1
aに加算するとDateTime
丸一日加算されます。ただし、例えば1日の端数を加えることもできます。
d = DateTime.now
d + Rational(10, 86400)
10秒を追加しますd
(1日は86400秒なので)。
Railsを使用している場合、Active Supportはいくつかのヘルパーメソッドを追加し、次のようにすることができます。
d + 20.minutes + 10.seconds
正しく機能するのはd
または ですDateTime
。Active Time
Support を単独で使用することもできますし、最近では必要な部分だけを取り込むこともできます。この機能は にあると記憶していますactivesupport/duration
。時間処理の支援を提供する gem は他にもいくつかあると思います。