我有一个具有此范围的模型:
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转换为配置时的帖子。
Why doesn't `config.time_zone` seem to do anything?
日期有什么类似的吗?或者有人可以推荐一种方法来调整我的日期查询以计算Date.today
到当地日期?谢谢!
答案 0 :(得分:2)
因为Date根本没有考虑时区,所以你需要使用Rails添加到Ruby #to_time_in_current_zone
对象的Date
方法。
来自文档:
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
在Working with time zones in Ruby on Rails的Elabs上发布了一篇精彩的博文,提供了有关该主题的更多信息。
答案 1 :(得分:0)
我使用Time.current.to_date
代替Date.today