# Time from seconds

**URL:** <https://www.ruby-forum.com/t/time-from-seconds/110860>\
**Category:** Rails\
**Created:** [July 31, 2007, 4:44pm UTC](https://www.ruby-forum.com/t/time-from-seconds/110860 "2007-07-31T16:44:55Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![casper\_the\_ghost](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/58956e/32.png) [@casper\_the\_ghost](https://www.ruby-forum.com/u/casper_the_ghost)\
**Post date:** [July 31, 2007, 4:44pm UTC](https://www.ruby-forum.com/t/time-from-seconds/110860/1 "2007-07-31T16:44:55Z")

</div>

Hi

I was just wondering if anyone can think of a simpler way of doing the  
following:

def number\_to\_time(seconds)  
seconds = seconds.to\_i  
if seconds \> 1.hours  
hours = seconds / 1.hour  
hours = “0#{hours}” if hours \< 10  
seconds = seconds % 1.hour  
else  
hours = “00”  
end  
if seconds \> 1.minute  
minutes = seconds / 1.minute  
minutes = “0#{minutes}” if minutes \< 10  
seconds = (seconds % 1.minute).to\_s.sub(’.0’, ‘’)  
else  
minutes = “00”  
end  
return “#{hours}:#{minutes}:#{seconds}”  
rescue  
nil  
end

Thanks,  
Toby

---

<div class="post-metadata">

**Author:** ![casper\_the\_ghost](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/58956e/32.png) [@casper\_the\_ghost](https://www.ruby-forum.com/u/casper_the_ghost)\
**Post date:** [July 31, 2007, 8:08pm UTC](https://www.ruby-forum.com/t/time-from-seconds/110860/2 "2007-07-31T20:08:24Z")

</div>

On 31 Jul 2007, at 16:44, removed\_email\_address@domain.invalid wrote:

> ```
> hours = "00"
> 
> ```
> 
> nil  
> end

How about

def number\_to\_time(seconds)  
[seconds/3600, seconds/60 % 60, seconds % 60].map{|t| t.to\_s.rjust  
(2,‘0’)}.join(’:’)  
end

Best regards

Peter De Berdt

---

<div class="post-metadata">

**Author:** ![casper\_the\_ghost](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/58956e/32.png) [@casper\_the\_ghost](https://www.ruby-forum.com/u/casper_the_ghost)\
**Post date:** [July 31, 2007, 9:42pm UTC](https://www.ruby-forum.com/t/time-from-seconds/110860/3 "2007-07-31T21:42:36Z")

</div>

removed\_email\_address@domain.invalid wrote:

> ```
> seconds = seconds % 1.hour
> 
> ```
> 
> return “#{hours}:#{minutes}:#{seconds}”  
> rescue  
> nil  
> end

How about:

Time.at(seconds).utc.strftime("%H:%M:%S")

–  
Cheers,

- Jacob A.
