On May 3, 2008, at 2:16 PM, Kyle Hargraves wrote:

On Sat, May 3, 2008 at 1:12 PM, Steve Downey <[EMAIL PROTECTED]> wrote:
Is there more precision than seconds in a Time instance?

irb(main):006:0> a,b = Time.now, Time.now
=> [Sat May 03 11:06:31 -0700 2008, Sat May 03 11:06:31 -0700 2008]
irb(main):007:0> puts a.to_i, b.to_i
1209837991
1209837991
=> nil

This came up this morning in #rspec; Time tracks microseconds which
blows up equality:

a, b = Time.now, Time.now
=> [Sat May 03 13:15:31 -0500 2008, Sat May 03 13:15:31 -0500 2008]
a == b
=> false
[a.usec, b.usec]
=> [93308, 93309]

Because of this, I tend to use 'should be_between()' when handling
times; someone else suggested the .to_i trick which is probably closer
to what is intended, but for some reason I find it confusing.

If I'm in a rails project, I like to use to_s(:db) to compare the times - that's how they are stored in the database. Any greater precision (at least in MySQL) gets lost when the datetime is read out of the database.

Scott

_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to