1. ホーム
  2. ruby-on-rails

Ruby on Railsで2つのDateTimesの間の秒数を取得する方法

2023-09-29 09:09:32

質問

従業員のタイムトラッキングを行うコードを持っています。 これは、従業員がどれくらいの時間出勤したかを示すカウンターを作成します。

これは現在のコードです。

  start_time = Time.parse(self.settings.first_clock_in)
  total_seconds = Time.now - start_time
  hours = (total_seconds/ 3600).to_i
  minutes = ((total_seconds % 3600) / 60).to_i
  seconds = ((total_seconds % 3600) % 60).to_i

これは問題なく動作します。 しかし、Timeが1970年から2038年の範囲に制限されているため、Timeの使用をすべてDateTimesに置き換えようとしています。 2つのDateTimesの間の秒数を取得する方法がわかりません。 引き算をすると有理数が得られますが、どのように解釈したらよいのかわかりません。

注:Ruby 1.9.2以降、Timeのハードリミットはなくなりました。しかし、Timeは1823-11-12から2116-02-20の間の値に対して最適化されています。

どのように解決するのですか?

2つのDateTimesを引き算すると、経過時間(日数)が返されるので、そうすればよいでしょう。

elapsed_seconds = ((end_time - start_time) * 24 * 60 * 60).to_i