0

我有一个具有此范围的模型:

scope :next_week, lambda { where("date > (?) and date <= (?)", Date.today, Date.today + 1.weeks ) }

但是,它更改日期对我来说太早了,因为我希望应用程序的时间为(并且服务器在 UTC 上):

config.time_zone = 'Eastern Time (US & Canada)'

我看过关于使用in_time_zone将 Time.now 转换为配置时间的帖子。

为什么`config.time_zone`似乎没有做任何事情?

约会有类似的东西吗?或者有人可以推荐一种方法来调整我的日期查询以计算Date.today到本地日期?谢谢!

4

2 回答 2

2

因为 Date 根本不考虑时区,所以您需要使用#to_time_in_current_zoneRails 添加到 RubyDate对象的方法。

从文档:

Converts Date to a TimeWithZone in the current zone if Time.zone or Time.zone_default is set, otherwise converts Date to a Time via #to_time

用法如下所示:

Date.today
# => Mon, 06 May 2013 

Date.today.to_time_in_current_zone
# => Mon, 06 May 2013 00:00:00 CDT -05:00 

在 Elabs 上有一篇很棒的博客文章,关于在 Ruby on Rails中使用时区,提供了有关该主题的更多重要信息。

于 2013-05-07T02:17:41.980 回答
0

我通过使用Time.current.to_date而不是解决了这个问题Date.today

于 2013-05-09T17:39:46.270 回答