我碰到的在我们的Rails应用程序的日期格式麻烦的光斑。

我在我们看来日期字段,其欲被格式化为的 DD / MM / YY 即可。这是用户将如何指望进入他们的日期和日期选择控件使用这种格式。

然而,活动记录似乎是期望的 MM / DD / YY 即可。

如果我输入 01/03/2010 ,这被放在为 2010 01月03日

如果我输入 25/03/2010 ,这被放在一个 无效

我如何获得的ActiveRecord期待她的雄伟日期格式?

有帮助吗?

解决方案

Rails的日期时间尝试检测自动格式化。它会检测以下格式:mm/dd/yydd-mm-yyyyyy-mm-ddyyyy/mm/dd。你可以猴子补丁DateTime.parse,但我宁愿提出这个问题到应用程序的查看

我总是建议使用yyyy-mm-dd [hh:mm:ss]作为用于日期的字符串表示。请检查您的DatePicker的文件,如果它支持多种日期格式。

例如jQuery的日期选择器已经此覆盖有dateFormat(对于被发送到服务器的数据,将其设置为yyyy-mm-dd)以及altFormat(用于用户看到的输入端,将其设置为dd/mm/yyyy)。

其他提示

添加名为rails_defaults.rbconfig\initializers目录文件;用下列行:

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

重新启动服务器,你是好去。

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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top