我确实有这样的设置
配置/ application.rb中
config.time_zone = 'London'
config.active_record.default_timezone = :utc
所有时间都将在伦敦当地时间保存 但是,我的应用程序将在世界各地使用,以便我想用当地时间显示。
我怎样才能使它成为可能?
P.S。我已经看过了,但它似乎只有在用户是Rails应用程序的成员资格时才会起作用 除非看到的人注册并设定当地时间,否则它不会知道当地时间。
是否有任何技术可以获取访问者PC的时区并用它来计算UTC时间?
http://railscasts.com/episodes/106-time-zones-revised?autoplay=true
答案 0 :(得分:1)
您可以使用javascript根据用户的本地时区转换时间。这是我做的:
在ApplicationHelper.rb中,添加一个生成html的方法,该方法将在客户端的浏览器中调用javascript:
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>