rails i18n日期问题

时间:2009-07-31 10:56:35

标签: ruby-on-rails ruby internationalization

我们目前正在开发一个使用i18n的rails项目,我们的日期问题很小:

# on my mac
"10.06.2008".to_date 
# produces => Tue, 10 Jun 2008

# on a friends mac and on the production server
"10.06.2008".to_date
# produces => ..., 06 Oct 2008

正如您所看到的,日期不对。我们检查了一切。 locale.yml(de.yml)在两个系统上都很好,并且也设置了default_locale。我们系统之间的唯一区别是ruby版本。我正在运行ruby 1.8.7并且他运行1.8.6。这可能是这种行为的原因吗?

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:11)

是的,Ruby版本是不同的。 String#to_date在内部调用Date._parse,并返回Ruby 1.8.6和1.8.7的不同结果。

1.8.7:

require "date"
Date._parse("10.06.2008")
#=> {:year=>2008, :mday=>10, :mon=>6}

1.8.6:

Date._parse("10.06.2008")
#=> {:mday=>6, :mon=>10, :year=>2008}

change log for 1.8.7提到了对日期解析方式的更改:

  

Date.parse:'##。##。##'(其中每个'#'是一个数字)现在被视为'YY.MM.DD'   而不是'MM.DD.YY'。虽然这种变化可能让您感到困惑,但您可以   当你知道你在做什么时,总是使用Date.strptime()   用。

尽管未明确提及您示例中的四位数版本,但相同的更改可能会导致差异。解决方法是使用Date.strptime

相关问题