Rubyでの時間操作 質問する

Rubyでの時間操作 質問する

20 分 10 秒後の DateTime インスタンスを作成したいと考えています。irb で Time と DateTime を試してみましたが、本当に意味のある方法がわかりません。DateTime オブジェクトには日数しか追加できず、Time オブジェクトには秒数しか追加できません。

追加したい時間を常に秒に変換するよりも良い方法はないでしょうか?

ベストアンサー1

ATimeはエポックからの秒数ですが、aはDateTimeエポックからの日数です。そのため、1aに加算するとDateTime丸一日加算されます。ただし、例えば1日の端数を加えることもできます。

d = DateTime.now
d + Rational(10, 86400)

10秒を追加しますd(1日は86400秒なので)。

Railsを使用している場合、Active Supportはいくつかのヘルパーメソッドを追加し、次のようにすることができます。

d + 20.minutes + 10.seconds

正しく機能するのはdまたは ですDateTime。Active TimeSupport を単独で使用することもできますし、最近では必要な部分だけを取り込むこともできます。この機能は にあると記憶していますactivesupport/duration。時間処理の支援を提供する gem は他にもいくつかあると思います。

おすすめ記事