【问题标题】:Ruby/Rails How to parse datetime from russian stringRuby/Rails 如何从俄语字符串中解析日期时间
【发布时间】:2019-05-20 15:25:47
【问题描述】:

我需要从俄语字符串中解析日期\时间。 示例:14:24, 19 мая 2019

【问题讨论】:

  • 某处可能有一颗宝石可以提供帮助。但在这种情况下,您也可以考虑通过 Regex 提取各个部分并创建基于哈希的查找,以将俄罗斯月份转换为月份编号。
  • github.com/yaroslav/russianstrftime,也许还有strptime? (对不起,我不会说俄语)
  • @Felix 我试过了,不幸的是它不起作用
  • 我认为您将不得不按位置解析并进行几个月的哈希查找。
  • @MarlinPierce 硬编码,但我想我会那样做。但我希望 mb 有人知道更好的解决方案

标签: ruby-on-rails ruby rails-i18n


【解决方案1】:

我会说Time.parse("14:24, 19 мая 2019") 应该适合你;)

(如果你使用 rails)

是的,它不能解析不是月份的英文名称,所以它应该像here一样使用:

RUSSIAN_MONTH_NAMES_SUBSTITUTION = { 'мая' => 'may', 'июня' => 'june' }

def russian_to_english_date(date_string)
  date_string.gsub(/мая|июня/, RUSSIAN_MONTH_NAMES_SUBSTITUTION)
end

Time.strptime(russian_to_english_date("14:24, 19 июня 2019"), "%H:%M, %d %B %Y")
# or
Time.parse(russian_to_english_date("14:24, 19 июня 2019"))

【讨论】:

  • 这仅在 5 月份使用时有效(因为 мая 恰好意味着 5 月)。在一年中的所有其他月份,您都会收到 2019-[current month]-19,因为 Time.parse 不会将任何内容从一种语言翻译成另一种语言
  • 看起来它总是放置当前月份。经过测试,不幸的是不起作用
  • 它真的只解析英文月份,并使用当前时间替换日期的缺失部分 =/ 更新答案以处理它;)
猜你喜欢
  • 2015-01-12
  • 2011-04-16
  • 1970-01-01
  • 1970-01-01
  • 2013-08-22
  • 2014-02-18
  • 2017-04-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多