Anyone know about Time#round in 1.9. Apparently it exists but it seems
to do nothing but eat up cpu cycles.
=A0ruby-1.9.2-p0 > t =3D Time.new
=A0 =3D> 2010-08-30 14:34:03 -0400
=A0ruby-1.9.2-p0 > t.round(100000)
=A0 =3D> 2010-08-30 14:34:03 -0400
=A0ruby-1.9.2-p0 > t.round(1000000)
=A0 =3D> 2010-08-30 14:34:03 -0400
A voice was heard to utter: "Use the source, Luke! Errr, uh, Trans.
Oh, and the docs!"
/*
* call-seq:
* time.round([ndigits]) -> new_time
*
* Rounds sub seconds to a given precision in decimal digits (0 digits
by default).
* It returns a new time object.
* _ndigits_ should be zero or positive integer.
*
* require 'time'
*
* t =3D Time.utc(2010,3,30, 5,43,"25.123456789".to_r)
* p t.iso8601(10) #=3D> "2010-03-30T05:43:25.1234567890Z"
* p t.round.iso8601(10) #=3D> "2010-03-30T05:43:25.0000000000Z"
* p t.round(0).iso8601(10) #=3D> "2010-03-30T05:43:25.0000000000Z"
* p t.round(1).iso8601(10) #=3D> "2010-03-30T05:43:25.1000000000Z"
* p t.round(2).iso8601(10) #=3D> "2010-03-30T05:43:25.1200000000Z"
* p t.round(3).iso8601(10) #=3D> "2010-03-30T05:43:25.1230000000Z"
* p t.round(4).iso8601(10) #=3D> "2010-03-30T05:43:25.1235000000Z"
* p t.round(5).iso8601(10) #=3D> "2010-03-30T05:43:25.1234600000Z"
* p t.round(6).iso8601(10) #=3D> "2010-03-30T05:43:25.1234570000Z"
* p t.round(7).iso8601(10) #=3D> "2010-03-30T05:43:25.1234568000Z"
* p t.round(8).iso8601(10) #=3D> "2010-03-30T05:43:25.1234567900Z"
* p t.round(9).iso8601(10) #=3D> "2010-03-30T05:43:25.1234567890Z"
* p t.round(10).iso8601(10) #=3D> "2010-03-30T05:43:25.1234567890Z"
*
* t =3D Time.utc(1999,12,31, 23,59,59)
* p((t + 0.4).round.iso8601(3)) #=3D> "1999-12-31T23:59:59.000Z"
* p((t + 0.49).round.iso8601(3)) #=3D> "1999-12-31T23:59:59.000Z"
* p((t + 0.5).round.iso8601(3)) #=3D> "2000-01-01T00:00:00.000Z"
* p((t + 1.4).round.iso8601(3)) #=3D> "2000-01-01T00:00:00.000Z"
* p((t + 1.49).round.iso8601(3)) #=3D> "2000-01-01T00:00:00.000Z"
* p((t + 1.5).round.iso8601(3)) #=3D> "2000-01-01T00:00:01.000Z"
*
* t =3D Time.utc(1999,12,31, 23,59,59)
* p (t + 0.123456789).round(4).iso8601(6) #=3D>
"1999-12-31T23:59:59.123500Z"
*/
Below that is a short, simple to follow implementation. You are
telling it to round to 100000 or 1000000 digits. That's probably not
what you mean?
Kirk Haines