2012-03-03 48 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,它将不起作用。