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

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

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

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

 2013-09-13 12:00:00.000000 

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

谢谢。

为此,您需要在application.rb中定义您的时区

 config.time_zone = 'YOUR-TIME-ZONE' config.active_record.default_timezone = :local config.active_record.time_zone_aware_attributes = false 

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

因此,在您的情况下,在application.rb中设置您的应用程序时区就像这样

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

现在,无论何时从数据库中获取记录,它都将始终转换为CST时区,而与DBs时区无关。

希望这会有所帮助。