Ruby 时间比较的 bug

shawnyu · January 24, 2013 · Last by sevk replied at January 25, 2013 · 4195 hits

trade.dispatched_at
=> Sun, 06 Jan 2013 19:02:05 +0800

Time.new(2013,1,6,19,2,5).to_datetime
=> Sun, 06 Jan 2013 19:02:05 +0800

Time.new(2013,1,6,19,2,5).to_datetime == trade.dispatched_at
 => false 

Time.new(2013,1,6,19,2,5).to_datetime === trade.dispatched_at
 => true 

更纠结的是

Time.new(2013,10,6,19,2,5).to_datetime === trade.dispatched_at
 => true 

谁能解释下这个 bug

太纠结了。。。

和文档说的不一样才叫 bug

$ ri DateTime.===
...
Returns true if they are the same day.

查看下 trade.dispatched_at.usec

#1 楼 @raecoo to_i 是一样的

a = Time.new #=> 2007-11-19 07:50:02 -0600 b = Time.new #=> 2007-11-19 07:50:02 -0600 a == b #=> false

a-b < 1 #=> true

You need to Sign in before reply, if you don't have an account, please Sign up first.