webエンジニアの日常

RubyやPython, JSなど、IT関連の記事を書いています

時刻の差を○日 ○時間○分○秒みたいに出力する

こんにちは、エンジニアのさもです。

今回はrubyの小ネタです。

仕事で日時データの差を○日 ○時間○分○秒みたいに出力するプログラムを書いたのでメモです。

スポンサーリンク

現在時刻からある日時までの時間を○日 ○時間○分○秒みたいに出力します。

def format_time_diff(datetime)
  diff = datetime - Time.zone.now
  return "過去日です" if diff < 60
  s = diff % 60
  m = ((diff - s) / 60) % 60
  h = ((diff - s - m * 60) / (60 ** 2)) % 24
  d = ((diff - s - m * 60 - h * 60 ** 2) / (60**2 * 24))
  "#{d.to_i}#{h.to_i}時間#{m.to_i}#{s.to_i}"
end

# 実行例

format_time_diff Time.now + 15.days + 20.hours + 13.minutes + 23.seconds
#=> "15日 20時間13分22秒"

以上です。