rails保存到mysql DB之前更改日期格式

我有一个我希望以MM / DD / YYYY显示的日期选择器。 但是我正在使用一个想要YYYY-MM-DD的mysql数据库。 因为它现在正在保存,但日期和月份正在逆转。

现在我有一个initalizer,date_time_formats.rb,它有:

Date::DATE_FORMATS[:default] = '%m/%d/%Y' 

同样在我的datepicker jscript中,我有正确的格式,我想显示:

 $(this).datepicker({"format": "mm/dd/yyyy", "weekStart": 0, "autoclose": true, "startDate":new Date()}); 

我尝试过这样的事情:

  Date.strptime(params[:location], "%d/%m/%Y") 

但是我得到了HashWithIndifferentAccess错误。

在分配给模型实例之前,如何在params哈希中重新格式化日期? 原因是如果日期无效(例如,2013年4月4日是好的,但2013年4月20日不是因为没有20个月),它似乎会被拒绝。 我是一个很大的时间轨道新手,所以也许我错了,但这就是它似乎工作。 谢谢!

试试位于这里的american_date gem: https : //github.com/jeremyevans/ruby-american_date

查找各种日期类的strftime方法。 你想要的咒语是Time.local(params[:location]).strftime('%m/%d/%Y') ,希望Time.local(params[:location]).strftime('%m/%d/%Y')帮助!

将日期清理为正确格式的快速方法是在保存之前在控制器中抓取它并使用strftime来更正格式。 例如:

 @model = Model.new(model_params) @model.date_you_want = @model.date_you_want.strftime('%Y/%d/%m') @model.save 

这将以正确的格式保存日期。 (我也使用datepicker-boostrap gem)