1

我想将事件保存在默认时区,即每当用户提交事件时,它将转换为默认时区并保存在数据库中。

每当用户请求事件时,系统将查找用户时区并将日期(从默认格式)转换为该用户时区并将其显示给用户。

我很难从哪里开始,我看到了很多笔记和文件,但无法弄清楚这样做的完整过程。

我看到了这段代码,但不明白如何使用它:

before_filter :set_time_zone

def set_time_zone
  Time.zone = current_user.time_zone if current_user
end
4

1 回答 1

3

数据库中的默认时区是 UTC。

有两种方法可以做到:

  1. 允许他们的用户将他们的时区存储在数据库中
  2. 从他们的 IP 中获取他们的时区

对于选项 1,Rails 对时区有很好的支持。#all 方法将允许您创建一个下拉列表供他们选择。然后将其与用户记录一起保存在数据库中。

选项 2 对用户来说工作量更少,但也不太准确。有一些服务可以将 IP 转换为时区。

要显示给定时区的时间,请使用Time#in_time_zone或者您可以Time.zone按上述方式设置它应该正确显示。

于 2012-11-17T14:15:45.563 回答