当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