代码之家  ›  专栏  ›  技术社区  ›  Mongus Pong

活动记录日期格式

  •  16
  • Mongus Pong  · 技术社区  · 15 年前

    在我们的Rails应用程序中,我遇到了一些关于日期格式的麻烦。

    我在视图中有一个日期字段,希望将其格式设置为 DD/MM/YY . 这是用户希望如何输入日期的方式,datepicker控件使用此格式。

    然而,积极的记录似乎是期待 毫米/dD/yy .

    如果我进入 01/03/2010 ,这个放在 03 2010年1月 .

    如果我进入 25/03/2010 ,这个放在 无效的 .

    我如何才能让ActiveRecord期待她的尊贵日期格式?

    3 回复  |  直到 13 年前
        1
  •  20
  •   Marcel Jackwerth    15 年前

    Rails的日期时间试图自动检测格式。它将检测以下格式: mm/dd/yy dd-mm-yy yyyy-mm-dd yyyy/mm/dd . 你可以用猴子补丁 DateTime.parse 但是我宁愿把这个问题转移到 视图 你的申请。

    我总是推荐使用 yyyy-mm-dd [hh:mm:ss] 作为日期的字符串表示形式。如果日期选择器支持多种日期格式,请检查它的文档。

    例如,jquery日期选取器包含 dateFormat (对于发送到服务器的数据,将其设置为 日期格式 以及 altFormat (对于用户看到的输入,将其设置为 dd/mm/yyyy )。

        2
  •  12
  •   Harish Shetty    15 年前

    添加名为的文件 rails_defaults.rb config\initializers 目录;具有以下行:

    Date::DATE_FORMATS[:default] = '%d/%m/%Y'
    Time::DATE_FORMATS[:default]= '%d/%m/%Y %H:%M:%S'
    

    重新启动服务器,您就可以开始了。

        3
  •  2
  •   grosser    13 年前
    class Date
      class << self
        def _parse_with_us_format(date, *args)
          if date =~ %r{^(\d+)/(\d+)/(\d+)$}
            _parse_without_us_format("#{$3.length == 2 ? "20#{$3}" : $3}-#{$1}-#{$2}", *args)
          else
            _parse_without_us_format(date, *args)
          end
        end
        alias_method_chain :_parse, :us_format
      end
    end