convert seconds to hours:minutes:seconds

P

`p

hello!
i am trying to convert a number of seconds to a nicely formatted string
like this:

7683 seconds = 02:08:03

is there an easy way to accomplish this?
 
C

Chris Pine

hello!
i am trying to convert a number of seconds to a nicely formatted string
like this:

7683 seconds =3D 02:08:03

Well, assuming you know how to arithmetic, conversions, and string
concatenation (and if not, check out http://pine.fm/LearnToProgram/),
all you're missing is how to pad with zeroes.

I do talk about the rjust method, but not that you can use it to pad
with things other than spaces:

2.to_s.rjust(5,'0')

This pads the string '2' (from 2.to_s) with the string '0'.

Another, fancier (or just more complicated? :) way:

irb(main):001:0> '%.5d' % 2
=3D> "00002"

Hope that helps,

Chris
 
A

Andy Delcambre

As long as you dont go past 24 hours you can use the Time class:

irb(main):016:0> Time.at(7683).gmtime.strftime('%R:%S')
=3D> "02:08:03"

If you dont use gmtime, it will go based off your localtime, where the
epoch =3D the offset from GMT.

also by doing the arithmatic:
irb(main):023:0> time =3D 7683
=3D> 7683
irb(main):024:0> hours =3D time/3600.to_i
=3D> 2
irb(main):025:0> minutes =3D (time/60 - hours * 60).to_i
=3D> 8
irb(main):026:0> seconds =3D (time - (minutes * 60 + hours * 3600))
=3D> 3
irb(main):030:0> printf("%02d:%02d:%02d\n", hours, minutes, seconds)
02:08:03
=3D> nil

HTH
- Andy Delcambre
 
P

`p

Andy said:
As long as you dont go past 24 hours you can use the Time class:

irb(main):016:0> Time.at(7683).gmtime.strftime('%R:%S')
=> "02:08:03"

hey thanks! that's what i was looking for.
 
J

James Edward Gray II

#!/usr/bin/ruby
b4 = Time.new
sleep(3)
after = Time.new
interval = after.to_i - b4.to_i

You can just subtract normally. Time knows what to do:

interval = after - b4
print "Started at ", b4.asctime, ", ended at ", after.asctime
print "\n Interval is ", interval.to_s, ".\n"

It's a good idea to get into the habit of using interpolation with
Ruby. That let's Ruby take care of stringifying your values. We can
also lose those \n characters:

puts "Started at #{b4} and ended at #{after}."
puts "Interval is #{interval}."

James Edward Gray II
 
S

Steve Litt

You can just subtract normally. Time knows what to do:

interval = after - b4


It's a good idea to get into the habit of using interpolation
with Ruby. That let's Ruby take care of stringifying your
values. We can also lose those \n characters:

puts "Started at #{b4} and ended at #{after}."
puts "Interval is #{interval}."

Confirmed! That's much cleaner. I've been looking for something like
that, and didn't want to kill a kitten by using printf() :)

Thanks

SteveT

Steve Litt
http://www.troubleshooters.com
(e-mail address removed)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,734
Messages
2,569,441
Members
44,832
Latest member
GlennSmall

Latest Threads

Top