用json跟踪日期

我正在实现一个Facebook应用程序并使用AJAX / JSON

但是,返回的JSON结构的格式为2010-05-30T06:14:00Z

我在控制器动作中调用Game.all.to_json

如何将它们转换为正常的日期格式?

使用fbjs从服务器端或客户端更容易吗? fbjs有很多bug。

所以我更喜欢使用Server side的解决方案( Active Records )。 就像在发送JSON结构之前转换数据一样。

我将自己的自定义格式添加到我返回的json的方式是将一个猴子补丁添加到ActiveSupport TimeWithZone类。

使用以下内容在config / initializers文件夹中添加文件:

 class ActiveSupport::TimeWithZone def as_json(options = {}) strftime('%Y-%m-%d %H:%M:%S') end end 

随着时区在所有主流浏览器和ie + +中工作:

 class ActiveSupport::TimeWithZone def as_json(options = {}) strftime('%Y/%m/%d %H:%M:%S %z') end end 

如果您想使用客户端javascript执行此操作,您可以使用以下内容解析各个日期:

 prettyDate = function(dateString) { var day, formatted, jsDate, month; jsDate = new Date(dateString); day = jsDate.getMonth() + 1 < 10 ? "0" + (jsDate.getMonth() + 1) : "" + (jsDate.getMonth() + 1); month = jsDate.getDate() < 10 ? "0" + (jsDate.getDate()) : "" + (jsDate.getDate()); formatted = "" + day + "/" + month + "/" + (jsDate.getFullYear()); return formatted; }; 

如果您需要格式化时间,则需要一些额外的代码。

您可以在模型中覆盖方法as_json:

 class Game def as_json(options = {}) super.merge(time: time.strftime('%d.%m.%Y %H:%M:%S')) end end 

Rails现在在DateTime对象上有.as_json方法。 生活变得更轻松。

在服务器端更容易做到这一点。 您可以使用gsub正则表达式将其放入所需的格式,或者使用time.strftime,然后使用该字符串生成json。

 Time.parse < datetime > 

simples。