我将params中的updated_at
作为字符串。我使用to_time
updated_at = params["latest_updated_at"].to_time
chat_history = ChatHistory.where('updated_at > ?',updated_at)
但它没有正常运作。它还会获得一些< updated_at
条记录。我只想要> update_at
。
param的值类似于"2016-03-17 18:06:36"
答案 0 :(得分:2)
所以这可能是一个时区问题。如果您的时间戳始终以相同的时区表示,您可以这样说:
ActiveSupport::TimeZone['America/Los_Angeles'].parse "2016-03-17 18:06:36"
这将为您提供TimeWithZone
个实例,您可以将其传递给where
来电。 (当然,将America/Los_Angeles
更改为适当的任何内容。)如果您已将Rails配置为使用所需的时区,则快捷方式可能为Time.zone.parse
。
如果时区可以根据current_user
而变化,只需使用用户首选项获取正确的时区,然后使用它来解析字符串。
顺便说一句,你在对你的问题的评论中得到了很多不好的建议:
您不应该使用to_date
,因为那样您将失去所有子日决议。如果你没有正确考虑时区,你甚至可能没有选择合适的一天!
解析字符串然后调用in_time_zone
不会做任何事情,因为通过解析字符串,您已经在一个时区或另一个时区解释了它。 in_time_zone
并不会改变 instant 的时间,只是在那个时刻你站在哪里,因此它是否应该写成&#34;太平洋时间下午5点& #34;或&#34;中午&#34;。
以下是关于Rails中时区的一些一般性建议,以及如何推理它们(由我):http://illuminatedcomputing.com/posts/2014/04/timezones/