Can Ruby do something like this?
irb(main):001:0> start = Time.now
=> Thu Nov 05 01:02:54 -0800 2009
irb(main):002:0> Time.now - start
=> 25.239
irb(main):003:0> (Time.now - start).duration
=> “25 seconds”
and similarly, report
23 minutes and 35 seconds
1 hour and 33 minutes
2 days and 3 hours
(either report the whole duration, up to how many seconds, or report up
to 2 numbers and units (if day and hour is reported, then no need to
tell how many minutes)
and similarly, report
23 minutes and 35 seconds
1 hour and 33 minutes
2 days and 3 hours
(either report the whole duration, up to how many seconds, or report up
to 2 numbers and units (if day and hour is reported, then no need to
tell how many minutes)
You can try something like below (change with conditional statements to
fit your requirements of upto 2 numbers):
class Time
def duration
Time.now - self
end
def duration_string
difference = duration
days = (difference/(360024)).to_i
hours = ((difference%(360024))/3600).to_i
mins = ((difference%(3600))/60).to_i
secs = (difference%60).to_i
"#{days} days, #{hours} hours, #{mins} minutes and #{secs} seconds"
end
end
start = Time.new
sleep(5)
puts start.duration_string
On Nov 5, 4:09 am, Jian L. [email protected] wrote:
and similarly, report
23 minutes and 35 seconds
1 hour and 33 minutes
2 days and 3 hours
(either report the whole duration, up to how many seconds, or report up
to 2 numbers and units (if day and hour is reported, then no need to
tell how many minutes)
RichUnits also has a duration class. You can tell it what time
segments you want to use.
On Nov 5, 2:09 am, Jian L. [email protected] wrote:
and similarly, report
23 minutes and 35 seconds
1 hour and 33 minutes
2 days and 3 hours
This old thread discusses a similar topic.
http://groups.google.com/group/comp.lang.ruby/browse_thread/thread/e51d23dadacc03fa
Note that durations expressed in any unit greater than weeks (months,
years, etc.) are going to give you problems.
On Nov 5, 4:09 am, Jian L. [email protected] wrote:
Can Ruby do something like this?
irb(main):001:0> start =Time.now
=> Thu Nov 05 01:02:54 -0800 2009
irb(main):002:0>Time.now - start
=> 25.239
irb(main):003:0> (Time.now - start).duration
=> “25 seconds”
require ‘chronic_duration’
ChronicDuration.output(Time.now - start, :format => :long)
=> “2 minutes 23 seconds”
See http://github.com/hpoydar/chronic_duration