关于rails中的时间戳:rails中的时间戳 – datetime或UNIX时间戳?

timestamps in rails - datetime or UNIX timestamp?

我目前正在向我大学的教授介绍一个项目,他不喜欢我的Rails应用程序使用datetime将其时间戳存储在数据库中(他不知道也不喜欢Rails)。他说这将导致由于时区不同而产生的问题,我应该将它保存为unix时间戳(整数)到数据库中。

现在我想设计Rails的人有理由这样存储它,并且随着时间戳字段被自动添加到任何迁移中,我想问你们

a)如果我可以修改rails默认迁移,默认情况下使用unix时间戳

b)关于这种方法的利弊


我的观点与您的教授相反。使用Rails很容易正确处理日期时间类型和时区问题。

a)我不确定是否要更改默认值,但这里有一个相关的问题。RubyonRails:为什么ActiveRecord对时间戳字段使用"datetime"类型而不是"timestamp"?b)这里有一个相关问题,答案很好。在RubyonRails中,日期时间、时间戳、时间和日期之间有什么区别?


Rails 2.2及更高版本支持现成的i18n(国际化)。这包括在数据库和视图中处理时区和日期时间格式。请看一下这里关于国际化API的Rails指南。

具体来说,你可能会寻找时间助手。我建议您确保将UTC格式的日期时间存储在数据库中,然后使用时间助手将其转换为最终用户所在区域的正确时间。

在/config/application.rb中指定时区,如果您使用正确的Time助手,rails将为您处理所有其他事务。