Ruby 时间比较的 bug

shawnyu · 2013年01月24日 · 最后由 sevk 回复于 2013年01月25日 · 4210 次阅读

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

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

需要 登录 后方可回复, 如果你还没有账号请 注册新账号