Ruby on Rails 3:如何覆盖/更改activessupport::TimeWithZone的as_json序



当Rails3将activessupport::TimeWithZone序列化为json时,日期看起来像这样:

"2011 - 07 - 20 - t23:59:00 07:00"

…应该是……

"2011 - 07 - 20 - t23: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

相关内容

  • 没有找到相关文章

最新更新