Ruby - 如何获得当前用户的时间?

时间:2012-04-13 14:45:04

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

我正在玩一个时区,我有一个简单的注册表格。用户注册后,我想用户显示他当前的时间,怎么做?

2 个答案:

答案 0 :(得分:3)

您不能仅使用Ruby,因为这些信息在服务器端不可用。

1)如果您知道用户的位置,则可以进行地理位置定位和determine the timezone。但是,如果从geo数据库获得的ip范围有几个时区,则可能会出现问题。

2)另一种解决方案,你可以使用javascript来帮助。因此,使用javascript,您可以计算时区并将其设置为cookie,然后使用Ruby从请求对象访问。 (How to get timezone with Javascript

答案 1 :(得分:1)

您可以在注册时询问用户当前的时区,并将其与用户详细信息一起保存。

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