Tue, 10-6ren">
gpt4 book ai didi

ruby-on-rails - rails i18n 日期问题

转载 作者:数据小太阳 更新时间:2023-10-29 08:16:56 25 4
gpt4 key购买 nike

我们目前正在开发一个使用 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,这会为 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: '##.##.##' (where each '#' is a digit) is now taken as 'YY.MM.DD' instead of 'MM.DD.YY'. While the change may confuse you, you can always use Date.strptime() when you know what you are dealing with.

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

关于ruby-on-rails - rails i18n 日期问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1211925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com