Rails 3时区问题

3

我在我的Rails应用程序中遇到了问题。

我将所有内容都保持为标准的Rails配置,所以没有设置config.time_zone,...

现在的问题是: 假设我有这样一个数据库条目:

 c = Client.first
 => #<Client id: 1, short: "Test", last_connected_at: "2011-06-21 09:22:58">

现在我生成了一个时间对象:

t = Time.zone.parse("2011-06-21 09:22:58")

仔细检查一下:

c.last_connected_at
=> Tue, 21 Jun 2011 09:22:58 UTC +00:00
t
=> Tue, 21 Jun 2011 09:22:58 UTC +00:00

所以它是相同的,但是

c.last_connected_at == t => false

为什么?这让按日期查找数据库行变得非常困难。
非常感谢您的帮助。
1个回答

2

这是一个警告。根据ruby-docs的说明:

所有时间都可能具有小数部分。当比较时间时要注意这一点——看起来相等的时间在比较时可能是不同的。

c.last_connected_at.to_i == t.to_i应该可以工作。


那在 Ruby 中是有效的比较。但现在我想要进行查找,就像这样:Client.where(["last_connected_at = ?", t"]),但它不起作用。我没有得到任何结果。 - Tobi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接