我正在实施一个Facebook应用程序和使用AJAX/JSON。与JSON的导轨日期
但是,JSON返回的结构具有此格式2010-05-30T06:14:00Z
。
我打电话给Game.all.to_json
控制器操作。
如何将它们转换为正常的日期格式?
从服务器端或客户端使用fbjs更容易吗? 有很多错误fbjs。
所以我宁愿使用Server side
使用(Active Records
)的解决方案。就像在发送JSON
结构之前转换数据一样。
我正在实施一个Facebook应用程序和使用AJAX/JSON。与JSON的导轨日期
但是,JSON返回的结构具有此格式2010-05-30T06:14:00Z
。
我打电话给Game.all.to_json
控制器操作。
如何将它们转换为正常的日期格式?
从服务器端或客户端使用fbjs更容易吗? 有很多错误fbjs。
所以我宁愿使用Server side
使用(Active Records
)的解决方案。就像在发送JSON
结构之前转换数据一样。
我将我自己的自定义格式添加到我返回的json的方式是将一个猴子补丁添加到ActiveSupport TimeWithZone类。
在config /初始化文件夹中添加一个文件,其内容如下:
class ActiveSupport::TimeWithZone
def as_json(options = {})
strftime('%Y-%m-%d %H:%M:%S')
end
end
这对我很好,但现在我' m试图为Date对象做类似的事情(使用date_select返回)。我尝试用ActiveSupport :: Date取代ActiveSupport :: TimeWithZone,但没有喜悦。任何帮助,将不胜感激。谢谢。 – Snips 2011-02-02 11:37:06
为时区添加%z可能会有所帮助。 – tbeseda 2011-02-18 18:45:18
@Geekygecko我upvoted你的答案。我使用这种方法,它适用于与模型相关的日期时间字段,而不适用于带有联接的AREL查询中其他表的日期时间字段。 – GeorgeW 2012-10-27 02:17:48
绝对容易在服务器端做到这一点。你可以做一个gsub正则表达式把它放入你想要的格式,或者一个time.strftime,然后用这个字符串生成你的json。
随着时区的所有主要浏览器和IE7 +工作:
class ActiveSupport::TimeWithZone
def as_json(options = {})
strftime('%Y/%m/%d %H:%M:%S %z')
end
end
Time.parse <datetime>
simples。
如果你想与客户端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
方法。生活变得更容易。
这工作:http://stackoverflow.com/questions/5370061/format-date-time-in-find-operation-in-rails-3/7479550#7479550 – hipertracker 2011-09-20 02:59:44