I have a feeling there is a simple/built-in way to do this but I can\'t find it.
I have a duration (in seconds) in an integer and I want to display it in a friendly form
This one uses the obscure divmod
method to divide and modulo at the same time, so it handles Float
seconds properly:
def duration(seconds)
minutes, seconds = seconds.divmod(60)
hours, minutes = minutes.divmod(60)
days, hours = hours.divmod(24)
"#{days.to_s.rjust(3)}d #{hours.to_s.rjust(2)}h #{minutes.to_s.rjust(2)}m #{seconds}s"
end