我想用Date.parse,但它并没有与意大利月份名称的工作!
Date.parse “1991年8月26日”=>孙,2009年7月26日
有什么方法吗?
我想用Date.parse,但它并没有与意大利月份名称的工作!
Date.parse “1991年8月26日”=>孙,2009年7月26日
有什么方法吗?
所有我能想出是差不多的schnaader的想法:让之间的映射MONTHNAMES
,等等,然后遍历映射,做gsub
。 那是:
english_to_italian = {
'english' => 'italian',
...
'august' => 'agosto',
...
}
english_to_italian.each do |en, it|
date_string.gsub!(/\b#{en}\b/i, it)
end
date = Date.parse(date_string)
该Date.italy
(同Date::ITALY
,我认为)方法值得指出的是,万一有一些我不知道的日历差异。
真的,我很惊讶,我无法找到此的通用解决方案。 也许有Rails的,可能做一些国际化的模块?
UPDATE:这可能让你更接近,但它并不像它会做的一切: http://github.com/rafaelrosafu/i18n_localize_core/tree/master
嗯,你可以使用字符串替换例程或正则表达式来月转换成英文翻译,之后调用Date.parse。 毕竟,你只需要更换12倍可能的值,还是有更复杂的字符串,也?
请注意,在Date类不同的东西,可以帮助你在这里,例如常数MonthNames中和ABBR_MONTHNAMES包含英文月份名称及其缩略语。
简单的示例代码只是为了说明我的意思:
# Note that you perhaps might want to
# convert input strings to lowercase
myString = "26 agosto 1991"
# replace italian month names
myString.gsub("...", "januar")
...
myString.gsub("agosto", "august")
...
myString.gsub("...", "december")
# now it should parse correctly
Date.parse(myString)
另一企图在正在修建https://github.com/ZenCocoon/I18n-date-parser的目标是支持你的I18n与工作任何语言。
仍然面临着一个奇怪的问题,但会到那里;-)