3

我有一个想要在 MM/DD/YYYY 中显示的日期选择器。但是我正在使用一个需要 YYYY-MM-DD 的 mysql 数据库。就目前而言,它的储蓄,但日期和月份正在颠倒。

现在我有一个初始化器 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 个月)。我是一个重要的时间轨道新手,所以也许我错了,但这似乎是它的工作方式。谢谢!

4

3 回答 3

5

尝试位于此处的美国日期宝石:https ://github.com/jeremyevans/ruby-american_date

于 2013-03-21T03:01:53.303 回答
1

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

于 2013-03-21T02:38:16.517 回答
0

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

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

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

于 2014-12-04T15:38:55.763 回答