我正在寻找一种在find(:all)中格式化日期时间的方法,这样当我用JSON渲染结果时,日期时间将会是
“2011年3月20日”
而不是
“2011-03-20T04:57:50Z”
有没有人有任何建议?感谢。
答案 0 :(得分:2)
好的,所以你想要很好地呈现JSON格式的结果。不是在路上改变日期的格式,而是在出路时改变它。
class Post
def formatted_created_at
created_at.strftime("%b %d, %Y")
end
def as_json(args={})
super(:methods=>:formatted_created_at, :except=>:date)
end
end
答案 1 :(得分:1)
我会在客户端上使用Date.parse(datestring)
来生成一些可用的内容。
答案 2 :(得分:0)
Time.now().strftime("%b %d, %Y)
答案 3 :(得分:0)
在我的头顶,你可以做类似的事情:
@posts = Post.all
@posts.all.each do |x|
x.date = x.date.strftime("%b %d, %Y")
end
@posts.to_json
答案 4 :(得分:0)
可行(在Rails 3.1中检查),将其放入config / initializer / times_format.js。前两行修复默认时间格式(例如AR created_at)。第三部分是JSON的猴子补丁。
Date::DATE_FORMATS[:default] = "%Y-%m-%d"
Time::DATE_FORMATS[:default] = "%Y-%m-%d %H:%M:%S"
class ActiveSupport::TimeWithZone
def as_json(options={})
strftime('%Y-%m-%d %H:%M:%S')
end
end
答案 5 :(得分:0)
看你用jbuilder?例如index.json.jbuilder
json.array!(@textstrings) do |textstring|
json.extract! textstring, :id, :text
json.created_at textstring.created_at.to_formatted_s(:short)
json.url textstring_url(textstring, format: :json)
end
在此示例中,我使用方法.to_formatted_s
json.created_at textstring.created_at.to_formatted_s(:short
我已经
了[{"id":1,"text":"liveasda","created_at":"17 Nov 12:48","url":"http://localhost:5555/textstrings/1.json"},{"id":2,"text":"123","created_at":"17 Nov 14:26","url":"http://localhost:5555/textstrings/2.json"},