在Rails中将系统日期转换为本地日期

时间:2013-05-07 02:09:58

标签: ruby-on-rails ruby

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

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到当地日期?谢谢!

2 个答案:

答案 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

解决了这个问题