2012-04-13 27 views
2

我在玩时区,我有一个简单的注册表单。用户注册后,我想用户显示他当前的时间,该怎么做?Ruby - 如何获取当前用户的时间?

+0

你知道用户位置吗?你可以从这些信息中获取当地时间。 – 2012-04-13 14:53:04

回答

3

只能用Ruby才能做到,因为这些信息在服务器端不可用。

1)如果你知道用户的位置,你可以做地理定位和determine the timezone。但是如果你从地理数据库获得的IP范围有几个时区,这可能会成为一个问题。

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

+0

嗯,所以当我读取可能性时,我认为最好的解决方案是让用户设置他的时区,然后使用这个时区工作......谢谢。 – user984621 2012-04-13 17:02:08

+0

总是在实现之前思考......更多的用户体验问题对于用户来说不是太无聊(不要求用户过多的不必要的行为)。如果用户在帐户中不需要适当的时间,并且只需要它,那么最好不要再询问用户的操作(如选择时区)。 – gakhov 2012-04-14 21:53:05

1

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

ActiveSupport(作为Rails API的一部分包含)有很好的方法来处理时区,您可以使用* in_time_zone *将当前时间转换为不同时区的时间。

举个例子

Time.now.in_time_zone("America/Guyana") 
Time.now.in_time_zone(8) 

凡TIME_ZONE键可以通过这个API文档中找到:http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html

见TimeWithZone更多信息,http://api.rubyonrails.org/classes/ActiveSupport/TimeWithZone.html#method-i-in_time_zone