我正在玩时区,我有一个简单的注册表。 用户注册后,我想用户显示他的当前时间,该怎么做?
你不能只用 Ruby 来做,因为这样的信息在服务器端不可用。
1)如果您知道用户的位置,则可以进行地理定位并确定时区。但是,如果您从地理数据库获得的 ip 范围有几个时区,则可能会出现问题。
2)另一种解决方案,您可以使用javascript来提供帮助。因此,使用 javascript,您可以计算时区并将其设置为 cookie,然后从请求对象使用 Ruby 进行访问。(如何使用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。