【发布时间】:2009-12-29 16:16:57
【问题描述】:
我在 Rails 2.1+ 中实现时区支持,并且在从数据库中提取数据的方式中遇到了一个明显的错误。让我试着设置一下。
“交易”模型包含“offer_date”日期时间字段。假设我有两条关于这些 offer_dates 的记录:
Deal 1: 2009-12-29 23:59:59 -0500
Deal 2: 2009-12-28 23:59:59 -0500
这是正确的:日期应该标记给定日期的最后一秒。
现在,当要找到今天的交易时,我有以下 AR 查询:
@deal = Deal.first(:conditions=>['offer_date > ?', Time.now.beginning_of_day], :order=>"offer_date ASC")
在这种情况下,虽然今天是 29 日,但它返回的记录表面上是 28 日。为什么?以下是控制台中发生的情况:
>> @deal = Deal.first(:conditions=>['offer_date > ?', Time.now.beginning_of_day], :order=>"offer_date ASC")
=> #<Deal id: 2, <blah blah blah...>, offer_date: "2009-12-29 04:59:00">
它将时间向前移动了 5 个小时,将昨天的时间推迟到了第二天。但是当我这样做时:
>> @deal.offer_date
=> Mon, 28 Dec 2009 23:59:00 EST -05:00
我得到了正确的时间。有没有搞错???我只想说,我需要那个日期才能正常工作,但我不知道我的问题出在哪里。您能提供的任何帮助将不胜感激!
【问题讨论】:
标签: ruby-on-rails activerecord timezone