Rails TimeWithZone 的格式化问题

towonzhou · 2013年09月09日 · 最后由 towonzhou 回复于 2013年09月26日 · 2870 次阅读

TimeWithZone.to_json的时候老是变成2005-02-01T15:15:10Z的形式。
加上了ActiveSupport::JSON::Encoding.use_standard_json_time_format = false之后 变成2005/02/01 15:15:10 +0000,有什么方法让默认 to_json 之后变成"2005-02-01 15:15:10的形式么?去掉后面的 +0000

可以重写 as_json 方法

class ActiveSupport::TimeWithZone
  def as_json(options=nil)
    time.strftime "%F %T"
  end
end

不过不推荐改默认的,可以用 jbuilder 之类得到想要的 json

#1 楼 @wongyouth 居然还有%F 和 %T... 方便

我是这么干的
只改了 ActiveSupport::JSON::Encoding.use_standard_json_time_format 这个标志控制的方法

module ActiveSupport                                                                                                                   
  class TimeWithZone
    def as_json(options = nil)
      if ActiveSupport::JSON::Encoding.use_standard_json_time_format
        xmlschema
      else
        #%(#{time.strftime("%Y/%m/%d %H:%M:%S")} #{formatted_offset(false)})
        %(#{time.strftime("%Y-%m-%d %H:%M:%S")})
      end 
    end 
  end 
end

现在可以改成%F %T了..

需要 登录 后方可回复, 如果你还没有账号请 注册新账号