0

在我的 VPS(Ubuntu 10.04LTS)上,我通过 RVM 安装了 ree-1.8.7-2011.03 和 ruby​​-1.9.2-p180。我的问题是,当我在 ree-1.8.7(irb) 中调用 Time.now 时,我得到 Thu May 12 12:16:50 +0200 2011,当我在 ruby​​-1.9.2(irb) 中执行相同操作时,我得到2011-05-12 12:17:44 +0200.

问题是日期的 ree 版本在我的 rails 查询中无法使用(生成的 SQL 完全被破坏了)。在每个查询中使用 strftime 格式化时间目前不是一个选项,切换到 1.9.2 也不是一个选项,所以我需要你的帮助来弄清楚为什么会发生这种情况并修复它。

谢谢你的帮助!

4

2 回答 2

7

这不是 REE 问题。Ruby 1.9.2 更改了 Time#to_s 的默认格式。

$ rvm use 1.8.7
ruby-1.8.7-p334 :001 > Time.now
# => Thu May 12 12:42:35 +0200 2011 

$ rvm use 1.9.2
ruby-1.9.2-p180 :001 > Time.now
# => 2011-05-12 12:42:44 +0200 

最好不要依赖默认的 Time#to_s 格式,而是始终使用自定义帮助程序或方法来格式化日期输出,否则您无法控制信息的显示方式。

在每个查询中使用 strftime 格式化时间目前不是一个选项

它不仅应该是一种选择,而且应该是您的首选。我强烈建议您修复现有代码以使用自定义格式化方法。

一个临时的解决方法是覆盖 Ruby 1.8.7 Time#to_s 方法以使用自定义格式。但是,进行此类更改可能会破坏其他库。

于 2011-05-12T10:45:42.773 回答
3

在你的 config/initializers/app.rb 中这样的东西怎么样

Time::DATE_FORMATS[:default] = "Your preferred date format"
于 2011-05-12T10:52:13.923 回答