【发布时间】:2012-04-25 22:41:58
【问题描述】:
我正在玩时区,我有一个简单的注册表单。用户注册后,我想显示他当前的时间,怎么做?
【问题讨论】:
-
你知道用户的位置吗?您可以从该信息中获取当地时间。
标签: ruby ruby-on-rails-3 time timezone
我正在玩时区,我有一个简单的注册表单。用户注册后,我想显示他当前的时间,怎么做?
【问题讨论】:
标签: ruby ruby-on-rails-3 time timezone
你不能只用 Ruby 来做,因为这样的信息在服务器端是不可用的。
1) 如果您知道用户的位置,您可以进行地理定位和determine the timezone。但是,如果您从地理数据库获得的 ip 范围有几个时区,则可能会出现问题。
2) 另一种解决方案,您可以使用 javascript 来帮助。因此,您可以使用 javascript 计算时区并将其设置为 cookie,然后从请求对象使用 Ruby 进行访问。 (How to get timezone with Javascript)
【讨论】:
您可以在注册期间向用户询问他们当前的时区,并将其与他们的用户详细信息一起保留。
ActiveSupport(包含在 Rails API 中)有一种很好的方式来处理时区,您可以使用 *in_time_zone* 将当前时间转换为不同时区中的时间。
举个例子
Time.now.in_time_zone("America/Guyana")
Time.now.in_time_zone(8)
可以通过此 API 文档找到 time_zone 键的位置:http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html
有关更多信息,请参阅 TimeWithZone,http://api.rubyonrails.org/classes/ActiveSupport/TimeWithZone.html#method-i-in_time_zone。
【讨论】: