2011-10-24 31 views
1

这是我目前的情况:Rails 3.1时区困惑?

我有一个用户类有一个属性时区。

当用户使用start_time(3pm)和end_time(5pm)创建演讲时,我想确保在数据库中start_time和end_time实际上是用户时区中的下午3点和下午5点。

在我的应用程序控制器我做了以下内容:

def set_timezone 
    if current_user 
    Time.zone = current_user.time_zone or "Eastern Time (US & Canada)" 
    end 
end 

当上述讲座保存到数据库中似乎增加4小时。它是否将其转换回UTC?奇怪的是,当我在视图中显示时间时是正确的(我猜它已经从UTC时间转换回EST时间)。

我需要它,以便如果用户选择4pm,它会在下午4点保存在数据库中,并且当我在视图中显示那段时间时,它是下午4点。我现在做错了什么?

编辑:它似乎导轨还将所有时间转换为UTC时,将它们存储在数据库中。没关系,直到我做了一个涉及时间的查询(我将不得不手动将它转换为UTC)。

回答

3

MySQL also has a time zone.

值得注意的是(重点煤矿):

当前会话时区设置影响显示和那些区敏感的时间值的存储。这包括NOW()或CURTIME()等函数显示的值,以及TIMESTAMP列中存储和检索的值。 将TIMESTAMP列的值从当前时区转换为UTC存储,并从UTC转换到当前时区以供检索。

它是否值得做任何事......不知道。我很怀疑。