рельсы i18n дата проблемы - PullRequest
2 голосов
/ 31 июля 2009

В настоящее время мы работаем над проектом rails, который использует i18n, и у нас небольшая проблема с датами:

# 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 Ответ

11 голосов
/ 31 июля 2009

Да, версия для 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}

В журнале изменений для 1.8.7 упоминается изменение способа анализа дат:

Date.parse: '##. ##. ##' (где каждое «#» - это цифра) теперь воспринимается как «YY.MM.DD» вместо «MM.DD.YY». Хотя изменения могут вас запутать, вы можете всегда используйте Date.strptime (), когда вы знаете, что имеете дело с.

Несмотря на то, что четырехзначная версия из вашего примера явно не упоминается, это же изменение, вероятно, вызывает разницу. Обходной путь должен был бы использовать Date.strptime.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...