こんにちは、エンジニアのさもです。
今回は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秒"
以上です。