Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save shunchu/3175001 to your computer and use it in GitHub Desktop.
Save shunchu/3175001 to your computer and use it in GitHub Desktop.
Convert seconds into HH:MM:SS in Ruby
t = 236 # seconds
Time.at(t).utc.strftime("%H:%M:%S")
=> "00:03:56"
# Reference
# http://stackoverflow.com/questions/3963930/ruby-rails-how-to-convert-seconds-to-time
@magne
Copy link

magne commented Dec 6, 2020

@joshuapinter, nice code, but I'm not the Magne that contributed it to SO.

@nfumiya
Copy link

nfumiya commented Jan 21, 2021

+1

@gabrielrb
Copy link

Nice! I also needed days, so thanks @alexwebgr
Just a small change, in case it's more than 48 hours

def formatted_duration(total_seconds)
    days = total_seconds / (60 * 60 * 24)
    hours = total_seconds / (60 * 60)
    hours -= (24 * days) if days >= 1
    minutes = (total_seconds / 60) % 60
    seconds = total_seconds % 60

    "#{days}d #{hours}h #{minutes}min #{seconds}s"
end

Copy link

ghost commented Mar 1, 2021

You can also use %T, it's a combination shortcut to get 24-hour time (%H:%M:%S)

Time.at(624).gmtime.strftime('%T')
=> "00:10:24"

@shilovk
Copy link

shilovk commented Jun 24, 2021

  def formatted_duration(total_seconds)
    days = (total_seconds / (60 * 60 * 24)).to_i
    hours = ((total_seconds / (60 * 60)) % 60).to_i
    minutes = ((total_seconds / 60) % 60).to_i
    seconds = (total_seconds % 60).to_i

    "#{days} d. #{hours} h. #{minutes} m. #{seconds} s."
  end

@aarkerio
Copy link

aarkerio commented Jul 8, 2021

☑️

@hidehiro98
Copy link

+1

@bryanalonso1993
Copy link

nice!!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment