Ruby on rails ruby:将泰国datetime字符串转换为datetime对象

Ruby on rails ruby:将泰国datetime字符串转换为datetime对象,ruby-on-rails,ruby,datetime,internationalization,thai,Ruby On Rails,Ruby,Datetime,Internationalization,Thai,我想解析这个泰国日期:15พ.ค. 2017年12月30日转换为DateTime对象。我怎样才能做到这一点 我在不同语言中发现: ✅ DateTime.parse novenbre=>2017年11月1日星期三00:00:00+0000 ✅ DateTime.parse Noviembre=>2017年11月1日星期三00:00:00+0000 ❌ DateTime.parseพฤศจิกายน => ArgumentError:无效日期 ❌ DateTime.15พฤศจิกายน 2017年

我想解析这个泰国日期:15พ.ค. 2017年12月30日转换为DateTime对象。我怎样才能做到这一点

我在不同语言中发现:

✅ DateTime.parse novenbre=>2017年11月1日星期三00:00:00+0000

✅ DateTime.parse Noviembre=>2017年11月1日星期三00:00:00+0000

❌ DateTime.parseพฤศจิกายน => ArgumentError:无效日期

❌ DateTime.15พฤศจิกายน 2017年12:30=>2017年3月15日星期三12:30:00+0000

编辑:
我的发现是错误的。DateTimeparse不转换。请看下面Iceman的评论。

我想泰国的月数可能与世界其他地方的月数不同。因此,您可以再添加一个月:

"15 เม.ย. 2017 12:30".to_datetime + 1.month

这个monkey patch to the Date类非常有用,解决了我的问题:

添加此行:

MONTH_TRANSLATIONS.merge! make_hash(%w/ม.ค. ก.พ. มี.ค. เม.ย. พ.ค. มิ.ย. ก.ค. ส.ค. ก.ย. ต.ค. พ.ย. ธ.ค./) # thai abbreviated

你的问题是什么?我如何将带有泰国月份名称的字符串转换为正确的日期时间对象?基本上,我不理解i18n是如何工作的。很可能对泰国月份名称的支持还没有实现。但是如果你知道名称和格式是常量,你知道哪个数字意味着什么,那么把字符串拆开,通过Time.newThankyou,@SergioTulentsev构建一个时间对象就很简单了。这是有道理的。我试试你的推荐。不幸的是,情况并非如此。如果我尝试从泰语转换另一个月,它仍然返回一个日期对象,其中的月份为当前月份的月份。15พ.ค. 2017年12:30.to_datetime=>2017年3月15日星期三12:30:00+0000