[英]rails i18n date problem
我们目前正在开发一个使用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。 这可能是这种行为的原因吗?
任何帮助,将不胜感激。
是的,Ruby版本是不同的。 String#to_date
Date._parse
内部调用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}
Date.parse: '##。##。##'(其中每个'#'是一个数字)现在被视为'YY.MM.DD'而不是'MM.DD.YY'。 虽然更改可能会让您感到困惑,但是当您知道要处理的内容时,可以始终使用Date.strptime()。
尽管未明确提及您示例中的四位数版本,但相同的更改可能会导致差异。 解决方法是使用Date.strptime
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.