我使用Rails 3.0.7应用程序来处理许多日期"文本字段输入"用意大利语格式(%d/%m/%Y)
。
在我的Linux Box上(配置了意大利语语言环境)我运行应用程序并在文本框中插入日期为2014年11月12日的意大利语格式:
12/11/2014 (%d/%m/%Y)
这里Rails正确保存日期没有任何问题,如果我尝试插入日期如2014年11月27日同样的事情:
27/11/2014 (%d/%m/%Y)
在远程生产服务器上错误地保存日期交换日期和月份部分,所以我的输入:
12/11/2014
错误地保存到日期:
11/12/2014
和日期输入:
27/11/2014
提出异常,因为27不是有效月份......
我认为进入生产服务器的问题是日期格式系统设置错误(mm/dd/yyyy
或许......)但服务器是由plesk面板管理的,我什么都看不到与日期格式系统设置有关...
所以问题是:我可以在Rails(v.3.0.x)中配置什么,以便我可以用意大利语格式保存文本字段日期输入? (可能避免编写大量代码......)
非常感谢...
答案 0 :(得分:0)
您的第一步应该是设置区域设置:
# config/initializers/locale.rb
I18n.default_locale = :it
处理输入的几个选项:
我真的推荐这个,因为你可以以便宜的方式获得验证,这是一个很好的功能。
params_with_dates = params.merge({
"date" => Date.strptime( params["date"], '%d/%m/%Y' )
})
Foo.create(params_with_dates);
补充阅读:
答案 1 :(得分:0)
Ruby 1.8使用日期格式转换%m /%d /%Y,1.9版本使用日期格式%d /%m /%Y,因此解决方案似乎正在切换到Ruby 1.9.x ... < / p>
示例,解析2015年12月28日的日期:
In Ruby 1.8: Date.parse("28/01/2015")
In Ruby 1.9: Date.parse("01/28/2015")