ruby-on-rails - 国际化的 Rails ActiveRecord 日期解析(特别是欧洲日期格式)

标签 ruby-on-rails ruby activerecord date internationalization

我正在为一个澳大利亚网站开发一个 Rails 项目。因此,他们希望能够以更符合欧洲标准的“dd/mm/yyyy”而不是以美国为中心的“mm/dd/yyyy”输入日期格式。我有一个带有日期字段的 ActiveRecord 模型。我正在使用 jQuery 的日期选择器在文本字段上提供日期选择,并将日期设置为正确的格式。但是,当我尝试保存记录时,日期错误。即使我已经根据 i18n 指南在初始化程序中设置了自定义日期格式。

>> b = BlogPost.new
>> b.posted_on = '20/07/2010'
=> "20/07/2010"
>> b.posted_on 
=> nil
>> b.posted_on = '07/20/2010'
=> Tue, 20 Jul 2010

Rails 似乎只是使用 Date.parse 将字符串转换为 Date 对象。有没有办法为整个项目解决这个问题?我不想为每个模型编写自定义代码。

最佳答案

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

关于ruby-on-rails - 国际化的 Rails ActiveRecord 日期解析(特别是欧洲日期格式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3365929/

相关文章:

ruby-on-rails - Rails Postgresql 多个模式和相同的表名

ruby-on-rails - Access-Control-Allow-Origin 不适用于 Backbone json 请求,Nginx 设置 "wide-open", header 看起来不错

ruby - 正则表达式:如何在每个 "="之后匹配第二个空格

php - 如何将派生列添加到我的 Yii 模型?

ruby-on-rails - 使用开放URI和回形针存储图像,且其大小小于10kb

javascript - 将对象数组从 js 传递到 rails

ruby - 一元运算符和在 Ruby 中将 proc 作为参数传递

ruby - 如何在 Ruby 中访问 'zip' gem(或 'rubyzip')?

sql - 创建ActiveRecord中是否不存在功能?

php - Yii Active Record COALESCE 不显示结果