保存到数据库的不同日期 - 时区错误

时间:2013-09-13 05:34:42

标签: ruby-on-rails ruby database datetime activerecord

当我使用Javascript从FullCalendar获取日期时,我有以下值:

Fri Sep 13 2013 08:30:33 GMT-0400 (EDT)

将该日期保存到数据库后,我发现在数据库中有不同的值:

2013-09-13 12:00:00.000000

因此,date会自动转换为UTC并像这样保存到数据库中。如何将正确的日期保存到数据库中?我不想硬编码:)

谢谢。

2 个答案:

答案 0 :(得分:2)

默认情况下,rails app时区为UTC。每当保存记录时,日期,日期时间,时间字段都会与DB的时区一起保存,但是当它们在模型中被取回时,它将被转换回UTC。

因此,在您的情况下,在application.rb中设置您的应用程序时区,如下所示

config.time_zone = 'Central Time (US & Canada)'

现在,每当从数据库中提取记录时,无论DBs时区如何,它都将始终转换为CST时区。

希望这会有所帮助。

答案 1 :(得分:2)

为此,您需要在application.rb

中定义时区
config.time_zone = 'YOUR-TIME-ZONE'
config.active_record.default_timezone = :local
config.active_record.time_zone_aware_attributes = false
相关问题