Ruby Date.strptime трудности при разборе 13 / ноября / 11 - PullRequest
0 голосов
/ 12 ноября 2011

При анализе пользовательского поля Jira, содержащего дату (например, 13 ноября / 11), я начинал с этого:

elsif custom.customfieldId == "customfield_10282"
@agenda_item.planned_release_date      =  custom.values.to_s

Но база данных хранит его как 13.110011. Итак, я стал умным и использовал это:

elsif custom.customfieldId == "customfield_10282"
@agenda_item.planned_release_date      =  Date.strptime(custom.values, "%d/%m/%Y")

А теперь я получаю:

приватный метод sub!' called for ["15/Nov/11"]:Jira4R::V2::ArrayOf_xsd_string C:/Ruby187/lib/ruby/1.8/date/format.rb:429:in _strptime_i ' C: /Ruby187/lib/ruby/1.8/date/format.rb: 401: в scan' C:/Ruby187/lib/ruby/1.8/date/format.rb:401:in _strptime_i ' C: /Ruby187/lib/ruby/1.8/date/format.rb: 601: в `_strptime ' [усеченный остаток стека]

Чего мне не хватает?

Ответы [ 2 ]

2 голосов
/ 12 ноября 2011

Это работает:

p Date.strptime('13/Nov/11', "%d/%b/%y")

Ваши проблемы:

  • `%Y - это год с 4 цифрами (2011). Используйте %y
  • %m - это месяц в цифрах (11). Используйте %b вместо (Nov)
2 голосов
/ 12 ноября 2011

Если я правильно понимаю вашу проблему, попробуйте использовать это:

Date.strptime('13/Nov/11', "%d/%b/%y")  # => 2011-11-13

У вас есть сокращенное название месяца, и вы должны использовать директиву формата b. Кроме того, поскольку в вашем году только два последних числа, используйте директиву y.

...