# Section 7.7. Converting To and From the Epoch

### 7.6. Converting Between Seconds and Larger Units

Sometimes 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`

The Ruby Way, Second Edition: Solutions and Techniques in Ruby Programming (2nd Edition)
ISBN: 0672328844
EAN: 2147483647
Year: 2004
Pages: 269
Authors: Hal Fulton

Similar book on Amazon