Ruby on rails 3 RubyonRails3:如何覆盖/更改ActiveSupport::TimeWithZone的as_json序列化?

Ruby on rails 3 RubyonRails3:如何覆盖/更改ActiveSupport::TimeWithZone的as_json序列化?,ruby-on-rails-3,json,datetime,serialization,timezone,Ruby On Rails 3,Json,Datetime,Serialization,Timezone,当Rails3将ActiveSupport::TimeWithZone序列化为json时,日期如下所示: “2011-07-20T23:59:00-07:00” 。。。应该是 “2011-07-20T23:59:00-0700” 最后一个冒号在尝试使用。。。它们都不能解释冒号的用法 所以我的问题是,“如何覆盖/更改TimeWithZone的序列化,以便as_json返回一个可以使用标准日期格式模式理解的有效字符串?” 现在我必须在我的客户端应用程序中去掉最后一个冒号,但这看起来很糟糕。它是一个冒

当Rails3将ActiveSupport::TimeWithZone序列化为json时,日期如下所示:

“2011-07-20T23:59:00-07:00”

。。。应该是

“2011-07-20T23:59:00-0700”

最后一个冒号在尝试使用。。。它们都不能解释冒号的用法

所以我的问题是,“如何覆盖/更改TimeWithZone的序列化,以便as_json返回一个可以使用标准日期格式模式理解的有效字符串?”

现在我必须在我的客户端应用程序中去掉最后一个冒号,但这看起来很糟糕。

它是一个冒号,但嘿,它是Ruby,这是允许的

module ActiveSupport
  class TimeWithZone
    def to_json
      super.gsub(/:(?!.*:)/,'')
    end
  end
end
通过运行测试:

Time.zone = 'Eastern Time (US & Canada)'
Time.zone.now.to_json # Outputs -> 2011-09-22T16:46:28-0400