Datetime Rails 3.1.8奇怪的时区行为。减去日期。我给零,鲁比说日期是不同的

Datetime Rails 3.1.8奇怪的时区行为。减去日期。我给零,鲁比说日期是不同的,datetime,ruby-on-rails-3.1,timezone,Datetime,Ruby On Rails 3.1,Timezone,我正在从rails 3升级到3.1.8(以及更高版本)。我的几个测试都失败了,其中一个乍一看似乎是因为mysql2gem(0.2.x到0.3.x)的变化。然而,它变得有点奇怪。下面是正在发生的事情 在我的测试中,我正在更新模型上的属性,并检查它们是否已保存: 。。。 post:create,:advision=>@advision\u属性 assert_equal assigns(:blah).start_date,@blah_attributes[:start_date] 说他们是不同的时代是

我正在从rails 3升级到3.1.8(以及更高版本)。我的几个测试都失败了,其中一个乍一看似乎是因为mysql2gem(0.2.x到0.3.x)的变化。然而,它变得有点奇怪。下面是正在发生的事情

在我的测试中,我正在更新模型上的属性,并检查它们是否已保存:

。。。 post:create,:advision=>@advision\u属性 assert_equal assigns(:blah).start_date,@blah_attributes[:start_date]

说他们是不同的时代是错误的。 如果我在assert_equal之前放置binding.pry并跳入,这就是我得到的结果:

a =  assigns(:blah).start_date
b =  @blah_attributes[:start_date]
a == b #false
a.to_s #"2012-10-17 20:46:12 UTC"
b.to_s #"2012-10-17 20:46:12 UTC"
a.to_i #1350506772
b.to_i #1350506772
a.to_i - b.to_i #0
到目前为止。。我仍然不明白为什么==返回false。但真正奇怪的是如果我减去日期-

a - b #-0.989403009414673
如果有人能解释这里发生了什么,我很想知道


同样,这个测试在Rails3中也通过得很好(没有为应用程序设置时区),任何指向已更改内容的指针也很方便

啊。。。还在调查。。但是在随后的试验中,a.to_f=1350601531.0 b.to_f=1350601531.04343 So。。看起来我的工厂女孩传递的准确性(也许?)比数据库(mysql)所能处理的要高。根据数据,看起来这是一个取整问题。