【发布时间】:2016-07-07 07:08:25
【问题描述】:
我对 Rails 中的区域有疑问。
我有CarRoute id: 22783, route_time: "2016-07-07 05:30:00"
但在CarRoute.find_by_id(22783).route_time is Thu, 07 Jul 2016 07:30:00 CEST +02:00
所以 rails 加了 2h 但是当我想按时间找到这条路线时,这条路线是行不通的,
CarRoute.where(:id=>22783,:route_time=> DateTime.new(Date.today.year, Date.today.month, Date.today.day, 7, 0, 0, 0)..DateTime.new(Date.today.year, Date.today.month, Date.today.day, 19, 0, 0, 0))
=> []
有人知道怎么找到这个吗?
【问题讨论】:
-
好的,所以 rails 不会“添加” 2 小时 - 您的数据通常以 UTC 格式存储在数据库中,这是因为这是一个很好的标准。然后您可能会在您当地的时区显示它(在那里您会得到 2 小时的时差)。所以...要找到它,您需要使用 UTC 时间
-
但 DateTime.new(Date.today.year, Date.today.month, 5, 7, 0, 0, 0) 在 UTC 返回 2016 年 7 月 5 日星期二 07:00:00 UTC +00:00 我尝试 Time.zone.local(Date.today.year, Date.today.month, 5, 7, 0, 0).in_time_zone('UTC') 但它看起来对我来说很奇怪 ;)
标签: mysql ruby-on-rails datetime