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

时间:2013-03-21 02:29:22

标签: mysql ruby-on-rails date datepicker

我有一个我要在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个月),它似乎会被拒绝。我是一个很大的时间轨道新手所以也许我错了,但这就是它似乎工作。谢谢!

3 个答案:

答案 0 :(得分:5)

尝试位于此处的 american_date gem:https://github.com/jeremyevans/ruby-american_date

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

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

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