【问题标题】:rails change date format before saving to mysql DBrails在保存到mysql DB之前更改日期格式
【发布时间】:2013-03-10 10:11:54
【问题描述】:

我有一个希望在 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 个月)。我是一个大时间铁路新手,所以也许我错了,但这似乎是它的工作方式。谢谢!

【问题讨论】:

    标签: mysql ruby-on-rails date datepicker


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

          猜你喜欢
          • 2017-04-13
          • 1970-01-01
          • 2014-02-23
          • 1970-01-01
          • 1970-01-01
          • 2017-05-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多