Как разобрать неанглийские даты с помощью DateTime strptime в Ruby?

Я пытаюсь разобрать даты, экспортированные из CMS. К сожалению, с набором шведской локали. Названия месяцев сокращены до трех символов, что имеет значение, когда речь идет о месяцах май и октябрь ("maj" против "May", и "okt" против "Oct").

Я ожидал, что использование DateTime.strptime с правильной локалью решит эту проблему, например, так:

require 'locale'
Locale.default = "sv_SE"
require 'date'
DateTime.strptime("10 okt 2009 04:32",'%d %b %Y %H:%M')

Однако дата все равно разбирается так, как она бы разбиралась при использовании сокращенных названий месяцев на английском языке:

ArgumentError: invalid date
    from lib/ruby/1.9.1/date.rb:1691:in `new_by_frags'
    from lib/ruby/1.9.1/date.rb:1716:in `strptime'
    from (irb):9
    from bin/irb:16:in `
'

Вопрос 4339399 затрагивает ту же тему и содержит ссылку на сложное решение для исправления этой проблемы.

Есть ли более элегантное решение для этого? Считается ли это вообще ошибкой в Ruby?

6
задан Community 23 May 2017 в 12:22
поделиться