# Formatting time calculation

**URL:** <https://www.ruby-forum.com/t/formatting-time-calculation/110131>\
**Category:** Rails\
**Created:** [July 23, 2007, 4:47pm UTC](https://www.ruby-forum.com/t/formatting-time-calculation/110131 "2007-07-23T16:47:17Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![nanouk](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/da6949/32.png) [@nanouk](https://www.ruby-forum.com/u/nanouk)\
**Post date:** [July 23, 2007, 4:47pm UTC](https://www.ruby-forum.com/t/formatting-time-calculation/110131/1 "2007-07-23T16:47:17Z")

</div>

I’m calculating the duration of an event by simply doing ‘end\_time -  
start\_time’. This outputs the time in seconds.

However, i’d like this to be displayed in hours, minutes and seconds in  
HH:mm:ss format.

Is this possible?

---

<div class="post-metadata">

**Author:** ![nanouk](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/da6949/32.png) [@nanouk](https://www.ruby-forum.com/u/nanouk)\
**Post date:** [July 26, 2007, 12:45am UTC](https://www.ruby-forum.com/t/formatting-time-calculation/110131/2 "2007-07-26T00:45:57Z")

</div>

i don’t know that there is a specific rails method to do that.  
however, something like this should do the trick.

def hms(secs)  
h, secs = secs.divmod(3600)  
m, s = secs.divmod(60)  
h = h.to\_s.rjust(2, “0”)  
m = m.to\_s.rjust(2, “0”)  
s = s.round.to\_s.rjust(2, “0”)  
“#{h}:#{m}:#{s}”  
end

put that in your application\_helper.rb file

\<%= hms(@object.duration\_in\_secs) -%\>

---

<div class="post-metadata">

**Author:** ![nanouk](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/da6949/32.png) [@nanouk](https://www.ruby-forum.com/u/nanouk)\
**Post date:** [July 26, 2007, 12:46am UTC](https://www.ruby-forum.com/t/formatting-time-calculation/110131/3 "2007-07-26T00:46:15Z")

</div>

Paul N. wrote:

> I’m calculating the duration of an event by simply doing ‘end\_time -  
> start\_time’. This outputs the time in seconds.
> 
> However, i’d like this to be displayed in hours, minutes and seconds in  
> HH:mm:ss format.
> 
> Is this possible?

I’m not aware of any Rails methods for this, so here is my  
implementation:

def format\_time  
seconds = time % 60  
minutes = (time / 60) % 60  
hours = (time / 3600) % 60  
“#{hours}::#{minutes}::#{seconds}”  
end

–  
Cheers,

- Jacob A.
