2011-03-20 57 views
0

我正在尋找一種方式,找到格式化日期時間(:所有),所以,當我使我的JSON結果,日期時間看起來像格式日期時間查找操作中的Rails 3

「 2011" 年3月20日的

代替

「2011-03-20T04:57:50Z」

沒有人有什麼建議?謝謝。

回答

1

我會在客戶端上使用Date.parse(datestring)來生成一些可用的內容。

+0

不,它返回int – hipertracker 2011-09-20 02:24:54

+0

@hipertracker無它沒有。 'Date.parse(datestring).class'返回'Date'常量。 'Date.parse(datestring).strftime(「%B,%Y」)'返回'2011年3月' – Oleander 2011-09-20 10:59:40

+0

處理json與某些js客戶端通信時遇到一些問題 使用此解決方案 在幾秒鐘內返回「int」 1970年1月1日 – ZMorek 2011-09-25 04:52:25

0
Time.now().strftime("%b %d, %Y) 
0

關閉我的頭頂,你可以這樣做:

@posts = Post.all 
@posts.all.each do |x| 
    x.date = x.date.strftime("%b %d, %Y") 
end 
@posts.to_json 
2

OK,所以要很好地呈現格式化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 
+0

我照你的建議做了,但沒有奏效。這裏是我的控制器和型號http://pastie.org/1693138。謝謝。 – 2011-03-20 17:51:42

+0

@Tri Vuong ..你的輸出是什麼?追加到你的貼子。 (你不想to_json)...你的行爲應該是「responds_with BusinessCard.order(」created_at DESC「)。all) – 2011-03-20 18:35:40

+0

created_at沒有我想要的格式。我將輸出附加到了pastie。 。 – 2011-03-20 20:02:53

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 
+0

這對我有用。Rails 3.1。 – 2012-12-26 16:57:31

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"},