Ruby Enterprise Edition以错误的格式提供Time.now

时间:2011-05-12 10:24:51

标签: ruby-on-rails ruby ruby-on-rails-3 locale ruby-enterprise-edition

在我的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

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

感谢您的帮助!

2 个答案:

答案 0 :(得分: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方法以使用自定义格式。但是,进行此类更改可能会破坏其他库。

答案 1 :(得分:3)

在config / initializers / app.rb

中如何做到这一点
Time::DATE_FORMATS[:default] = "Your preferred date format"