2

タイムゾーンとともに日付と時刻を加算/減算し、出力を DataTime 形式ではなく、日、時間、分、秒のカウントとして出力するための ruby​​/rails の方法はありますか?

t1 = "2012-05-05 00:00:02 -0400"
t2 = "2012-05-04 00:00:00 -0500"

time_diff = (Time.now() - Time.parse(t1)).to_s
#Or
time_diff = (Time.parse(t1) - Time.parse(t2)).to_s

私は探しています1 Day, 01:59:58 結果は#of Days HH:MM:SSフォーマットする必要があります

4

1 に答える 1

8

私の知る限り、Ruby や Rails にはこれを行うための組み込み機能はありません。ありますがdistance_of_time_in_words、探しているように見えるよりもあいまいな時間が表示されます(たとえば、「約7日」)。

ただし、これを行うメソッドを作成するのはかなり簡単です。秒単位の差が与えられると、差の日、時間、秒が得られます。

def time_length seconds
  days = (seconds / 1.day).floor
  seconds -= days.days
  hours = (seconds / 1.hour).floor
  seconds -= hours.hours
  minutes = (seconds / 1.minute).floor
  seconds -= minutes.minutes
  { days: days, hours: hours, minutes: minutes, seconds: seconds }
end

time_length(Time.parse(t1) - Time.parse(t2))
#=> {:days=>0, :hours=>23, :minutes=>0, :seconds=>2.0}
于 2012-05-05T23:50:18.190 に答える