2

好的,这一定是有史以来最奇怪的与 Rails 相关的问题。大约一个月前引起了我的注意,当时我们的一些员工开始注意到,每次在日期字段中输入一个值并保存,然后再回来,总是比他们保存的值晚 2 天。这是一个非常一致的问题。如果它只是那个网络应用程序,我会很好。但它已经开始在我们所有的 Rails 应用程序中发生。我检查了服务器时间。他们都是正确的。正确的日期、年份、时间、时区等。更奇怪的是我们已经导入了一些数据,日期字段显示为“2013-04-15”,但是当在 rails 中提取该确切条目时显示为“2013-04” -13' 正好休息 2 天。(即使没有用 strftime 格式化时间)这开始让我发疯了。我唯一的解决方法是获取值并添加 2.days 但这不会跨越多个 Web 应用程序。有没有人有任何想法可以阐明这一点。

***作为旁注,这在开发模式下不会发生。

********* 经过几个月的努力终于找到了答案。这就是我连接数据库的方式。当我们切换到 MSSQL 2012 时,我开始使用非标准 gem 连接到 SQL 2012,因为标准不适用于我们的 sql 配置,所以我使用了 gem。-> 宝石“jdbc-mssql-azure”,“~> 0.0.1”。显然,该 gem 中的某处存在一个错误,导致日期向后呈现 2 天,而不管 SQL 值如何。谢谢大家的评论和帮助。它还可以帮助美国人使用“amarican-date”宝石

4

1 回答 1

0

当我们没有更多信息时,发布答案有点困难。

如果服务器和数据库时间正确并且在开发模式下没有发生,我会说问题出在 environment/production.rb 文件中。

这两个设置尤其可能会导致时间问题。

config.time_zone                      #sets the default time zone 
                                      #for the application and enables
                                      #time zone awareness for Active Record.

config.active_record.default_timezone #default is :utc 
于 2013-06-11T07:31:13.553 回答