我有一个项目,采用 Rails 默认的时区设置,就是保存进数据库的是 UTC 时间,然后在 Controller 层面根据每个用户在 before_filter 里设置 Time.zone,达到转换时间的目的。
至于怎么根据用户设置时区,目前的做法是,页面上给一个下拉框,让用户选择一个时区,选择后存入 session,刷新一遍页面,以后每次页面请求就从 session 里取值赋给 Time.zone。
现在的问题是:每次打开浏览器,都要先选择一下时区,而且可以随意改,感觉不是很友好。举个例子,大部分人不会去手动改时区,他们需要的是页面打开后,时间相关的地方就是他们的本地时间。
请问有没有什么办法,能够在一个用户初次打开页面时,服务端就能在那次请求中“猜出”客户端的时区,然后把 Time.zone 设置好?或者有没有什么人性化的办法去做到这一点?
各位在项目中都是怎么用的?