2012-03-03 49 views
2

我需要產生的Rails的日期,看起來像這樣:如何在Rails中將日期格式化爲JSON?

/日期(1294268400000)/

我已經試過日期時間,to_i,to_json的各種組合,但從來沒有設法得到/Date()/的事情。

我是否必須以毫秒爲單位獲取我的日期,然後手動包裝/Date()/,或者是否有內置方法?

回答

1

什麼(紅寶石1.9.x的)?:

Time.now.strftime("/Date(%s%L)/") 
=> "/Date(1335280866211)/" 
0

退房這個問題:

c# serialized JSON date to ruby

...簡單的答案似乎是創建一個parse_date方法。

+0

謝謝(我見過這個),但我沒有試圖讀取或解析這種格式,而是要生成它。所以從Date.new(2012,1,1),我怎麼得到我的問題給出的格式表示? – Pierre 2012-03-03 21:23:22

0

這是UNIX Epoch(自1970-01-01以來的秒數)對不對?怎麼樣使用DateTime#strftime方法?

# Taken from the Ruby documentation 
seconds_since_1970 = your_date.strftime("%s") 

UPDATE:OK,這是毫秒,根據您可以使用your_date.strftime("%Q")得到毫秒的文件(但我沒有嘗試過)。

+1

謝謝你的回答,但我已經知道了毫秒級的事情。我的問題是關於'/ Date('和')/'的事情。我不知道這是否是標準的或者如果我不得不手動添加它。 – Pierre 2012-04-24 12:54:37

1

你應該嘗試

new Date(posixMillisecondsHere) 

第一。 MDN說調用構造上下文之外Date功能(即,不帶new)將始終返回包含格式化的日期而不是Date對象的字符串。

嚴格地說,當你這樣做,你寫JavaScript和JSON不是。 JSON不能包含Date對象。

RFC 4627

2.1。值

一個JSON值必須是一個對象,數組,數字或字符串,或者 一個以下三種文字名稱:

false null true 

如果你想要把一個日期到什麼是嚴格考慮使用JSON,然後將其還原出來,您必須選擇某種使用JSON基元的方法(例如,對象,數組,數字,字符串等)來編碼日期。

如果你想獲得一個約會回來了JSON的,不管你解析JSON必須明白,你用來編碼日期的約定。

希望這些是可信和/或官方的足夠幫助。

1

這樣的事情:

在你的配置/ en。YML文件:

en: 
    time: 
    formats: 
     json: "/Date(%s%L)/" 

,比認爲:

<%= l(Time.now, :format => :json) %> 

請注意,您將需要訪問中呈現JSON方法的幫手。所以如果你使用ActiveRecord#to_json方法來生成jsons,它將不起作用。