如何在Rails中将日期格式化为JSON?
我需要产生的Rails的日期,看起来像这样:如何在Rails中将日期格式化为JSON?
/日期(1294268400000)/
我已经试过日期时间,to_i,to_json的各种组合,但从来没有设法得到/Date()/
的事情。
我是否必须以毫秒为单位获取我的日期,然后手动包装/Date(
和)/
,或者是否有内置方法?
什么(红宝石1.9.x的)?:
Time.now.strftime("/Date(%s%L)/")
=> "/Date(1335280866211)/"
这是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")
得到毫秒的文件(但我没有尝试过)。
谢谢你的回答,但我已经知道了毫秒级的事情。我的问题是关于'/ Date('和')/'的事情。我不知道这是否是标准的或者如果我不得不手动添加它。 – Pierre 2012-04-24 12:54:37
你应该尝试
new Date(posixMillisecondsHere)
第一。 MDN说调用构造上下文之外Date
功能(即,不带new
)将始终返回包含格式化的日期而不是Date
对象的字符串。
严格地说,当你这样做,你写JavaScript和JSON不是。 JSON不能包含Date对象。
2.1。值
一个JSON值必须是一个对象,数组,数字或字符串,或者 一个以下三种文字名称:
false null true
如果你想要把一个日期到什么是严格考虑使用JSON,然后将其还原出来,您必须选择某种使用JSON基元的方法(例如,对象,数组,数字,字符串等)来编码日期。
如果你想获得一个约会回来了JSON的,不管你解析JSON必须明白,你用来编码日期的约定。
希望这些是可信和/或官方的足够帮助。
这样的事情:
在你的配置/ en。YML文件:
en:
time:
formats:
json: "/Date(%s%L)/"
,比认为:
<%= l(Time.now, :format => :json) %>
请注意,您将需要访问中呈现JSON方法的帮手。所以如果你使用ActiveRecord#to_json方法来生成jsons,它将不起作用。
谢谢(我见过这个),但我没有试图读取或解析这种格式,而是要生成它。所以从Date.new(2012,1,1),我怎么得到我的问题给出的格式表示? – Pierre 2012-03-03 21:23:22