【问题标题】:Ruby - how to get current user's time?Ruby - 如何获取当前用户的时间?
【发布时间】:2012-04-25 22:41:58
【问题描述】:

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

【问题讨论】:

  • 你知道用户的位置吗?您可以从该信息中获取当地时间。

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


【解决方案1】:

你不能只用 Ruby 来做,因为这样的信息在服务器端是不可用的。

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

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

【讨论】:

  • 嗯,所以当我阅读可能性时,我认为最好的解决方案是让用户设置他的时区,然后使用这个时区工作......谢谢。
  • 在实施之前总是三思而后行......更多的是用户体验问题不要让用户太无聊(不需要用户进行太多不必要的操作)。如果用户在帐户中不需要正确的时间并且只有您想要它,那么最好不要这样做,然后要求用户执行操作(例如选择时区)。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 2020-12-14
    • 1970-01-01
    • 2015-06-09
    • 1970-01-01
    • 2011-02-16
    • 2013-12-25
    相关资源
    最近更新 更多