我正在实施 Facebook 应用程序并使用 AJAX / JSON 。
但是,返回的 JSON 结构的格式为2010-05-30T06:14:00Z
。
我在控制器操作中调用Game.all.to_json
。
如何将它们转换为普通日期格式?
使用 fbjs 从服务器端或客户端更容易吗? fbjs 有很多错误。
所以我更喜欢使用Server side
使用(Active Records
)的解决方案。就像在发送JSON
结构之前转换数据一样。
答案 0 :(得分:47)
我将自己的自定义格式添加到我返回的json中的方式是将一个猴子补丁添加到ActiveSupport TimeWithZone类。
在config / initializers文件夹中添加一个文件,其中包含以下内容:
class ActiveSupport::TimeWithZone
def as_json(options = {})
strftime('%Y-%m-%d %H:%M:%S')
end
end
答案 1 :(得分:7)
随着时区在所有主流浏览器中工作,即7 +:
class ActiveSupport::TimeWithZone
def as_json(options = {})
strftime('%Y/%m/%d %H:%M:%S %z')
end
end
答案 2 :(得分:2)
如果您想使用客户端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;
};
如果您需要格式化时间,则需要一些额外的代码。
答案 3 :(得分:2)
您可以在模型中覆盖方法as_json:
class Game
def as_json(options = {})
super.merge(time: time.strftime('%d.%m.%Y %H:%M:%S'))
end
end
答案 4 :(得分:2)
Rails现在在.as_json
对象上有DateTime
方法。生活变得更轻松。
答案 5 :(得分:1)
在服务器端更容易做到这一点。您可以使用gsub正则表达式将其放入所需的格式,或者使用time.strftime,然后使用该字符串生成json。
答案 6 :(得分:1)
Time.parse < datetime >
simples。