2

是否可以使用原生 Ruby 或 Rails 方法将本地化的 DateTime 字符串解析回正确的 DateTime?

我在 i18n 中查看了我期望的位置,因为它包含格式和语言环境,但我找不到它。

我有一个字符串:"za 18 mei 18:05"它是荷兰语(:nl),在英语中它会是"Sa 18 May 6:15PM"。日期格式是:"%a %d %b %H:%M"。我希望字符串解析回2012-05-08T18:12:00+01:00.

有没有可能从中获取 DateTime 的方法?我的荷兰语翻译有一个很大的语言环境文件,我无法想象我不能用它来将格式解析回 db 格式

4

2 回答 2

2

您需要稍微操作一下日期字符串,因为它们不是英文的。

试试这个:

nl = "vri 18 mei 18:05"
dt = DateTime.strptime(nl.gsub(/vri|mei/, 'vri' => 'Fri', 'mei' => 'May'), "%a %d %b %H:%S")

这是一个示例方法,说明如何在将字符串发送到strptime. 您可能需要想出一种更优雅的方法来替换原始字符串(例如编写帮助程序)。

使用delocalize宝石

或者,也许您可​​以尝试 gem delocalize

I18n.locale = :nl
Delocalize::LocalizedDateTimeParser.parse("Vri 18 mei 18:02", DateTime)

确保您的config/locales文件夹中有正确的“nl.yml”。您可以从这里获取:https ://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/nl.yml

于 2012-12-08T08:54:52.667 回答
0

您还可以查看https://github.com/carlosantoniodasilva/i18n_alchemy它以类似的方式进行离域化,但其范围仅限于模型,因此它不会与视图类混淆。

于 2014-10-29T15:02:14.737 回答