首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 3.2 +Ruby1.9.3,created_at返回错误的时区

Rails 3.2 +Ruby1.9.3,created_at返回错误的时区
EN

Stack Overflow用户
提问于 2013-03-24 00:40:43
回答 2查看 1.9K关注 0票数 1

我升级到Rails 3.2和Ruby1.9.3,我得到了一个非常奇怪的行为

我有一个名为Entry的模型。当创建一个新条目时,它将以当前日期和时间插入到DB中。

但是,当我运行Entry.find_by_id(THE_ENTRY_ID).created_at时,我得到了在db时创建的“正确”,但是在不同的TimeZone中,例如:在db中:

2013-03-24 00:05:29

在Rails控制台和应用程序中:

2013年3月23日,星期六20:05:29

为什么它突然返回错误的时区?

EN

回答 2

Stack Overflow用户

发布于 2013-03-24 09:11:21

在阅读了DOCS并看到这个rails强制转换之后:http://railscasts.com/episodes/106-time-zones-revised

现在一切都清楚了。

代码语言:javascript
复制
config.time_zone = 'Eastern Time (US & Canada)'

此设置是负责将所有时间对象转换为当前时区的实际设置。我就是这么看的-4

这一背景:

代码语言:javascript
复制
config.active_record.default_timezone

决定如何节省数据库的时间,但是.它只获得两个可能的值::local和:UTC,默认值是:UTC

当我使用rails控制台查看我的条目时,所显示的时间是在转换到“东方时间”之后,以便查看DB中存储的实际日期:

代码语言:javascript
复制
created_at_before_type_cast

,因为它是默认值,因此返回了UTC时间。

我之所以认为在DB中,它存储在我的时区+2中,是因为我使用了MySQL工作台,它的GUI只是向我展示了本地机器时间中的日期时间值。

摘要:

真正重要的设置是:

代码语言:javascript
复制
config.time_zone

效果很好。通过DOCS很重要

票数 3
EN

Stack Overflow用户

发布于 2013-03-24 00:43:07

检查application.rb中的配置。如果没有设置时区,rails将采用操作系统的默认时区。要解决这个问题,请将UTC设置为时区。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15593803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档