7.6. Converting Between Seconds and Larger UnitsSometimes we want to take a number of seconds and convert to days, hours, minutes, and seconds. This following routine will do just that: def sec2dhms(secs) time = secs.round # Get rid of microseconds sec = time % 60 # Extract seconds time /= 60 # Get rid of seconds mins = time % 60 # Extract minutes time /= 60 # Get rid of minutes hrs = time % 24 # Extract hours time /= 24 # Get rid of hours days = time # Days (final remainder) [days, hrs, mins, sec] # Return array [d,h,m,s] end t = sec2dhms(1000000) # A million seconds is... puts "#{t[0]} days," # 11 days, puts "#{t[1]} hours," # 13 hours, puts "#{t[2]} minutes," # 46 minutes, puts " and #{t[3]} seconds." # and 40 seconds. We could, of course, go up to higher units. But a week is not an overly useful unit; a month is not a well-defined term; and a year is far from being an integral number of days. We also present here the inverse of that function: def dhms2sec(days,hrs=0,min=0,sec=0) days*86400 + hrs*3600 + min*60 + sec end |