1

我确实有这样的设置

配置/应用程序.rb

config.time_zone = 'London'
config.active_record.default_timezone = :utc

所有时间都将保存为伦敦当地时间。
但是,我的应用程序将在世界各地使用,因此我想显示他们的当地时间。

我怎样才能使它成为可能?

PS 我看过这个,但它似乎只有当用户是 Rails 应用程序的成员时才有效。
除非看到的人注册并设置他的当地时间,否则它不会知道他们的当地时间。

没有任何技术可以获取访问者PC的时区并用它计算UTC时间吗?

http://railscasts.com/episodes/106-time-zones-revised?autoplay=true

4

1 回答 1

1

您可以使用 javascript 根据用户的本地时区转换时间。这是我所做的:

在 ApplicationHelper.rb 中,添加一个生成将在客户端浏览器上调用 javascript 的 html 的方法:

def localize(time)
    "<script type='text/javascript'>localize(#{time.tv_sec * 1000});</script>".html_safe
end

添加将处理时间并显示其字符串格式的 javascript 函数(使用浏览器的时区)

function localize(millisec)
{
  var d = new Date(millisec);
  document.write(d.toString());
}

然后在你的视图中,当你需要显示时间时,调用辅助方法:

<span><%= localize(@my_record.time) %></span>
于 2013-05-13T02:25:06.230 回答