如何根据用户当前时区制作今天的日期方法?

时间:2012-08-19 22:58:58

标签: ruby-on-rails ruby ruby-on-rails-3

我的课程中有一个定义今天是什么的方法。

class Practice
  attr_accessible :date
  def self.today
    where(:date => Date.today)
  end
end

我的Time.zone与用户使用应用程序控制器上的before过滤器相同。

before_filter :set_user_time_zone

private

def set_user_time_zone
  if signed_in?
    Time.zone = current_user.time_zone
  end
end

但是当谈到Date.today时,即使把用户的时区放在东京也是如此。所以8月19日在美国,8月20日。我怎样才能使它成为8月20日或时区的日期?

1 个答案:

答案 0 :(得分:4)

您可以使用in_time_zone

,而不是更改Time.zone
Time.current.in_time_zone(current_user.time_zone).to_date

您可能不得不将时区作为方法参数传递,因为current_user通常在模型中不可用。