我需要在Rails中生成一个如下所示的日期:
/日期(1294268400000)/
我尝试过DateTime,to_i,to_json的各种组合,但从未设法获得/Date()/
。
我是否必须简单地以ms为单位获取日期,然后手动换行/Date(
和)/
,还是有内置方法?
答案 0 :(得分:1)
(红宝石1.9.x)怎么样?:
Time.now.strftime("/Date(%s%L)/")
=> "/Date(1335280866211)/"
答案 1 :(得分:1)
你应该试试
new Date(posixMillisecondsHere)
第一。 MDN表示在构造函数上下文之外调用Date
函数(即没有new
)将始终返回包含格式化日期而不是Date
对象的字符串。
严格地说,当你这样做时,你正在编写JavaScript而不是JSON。 JSON不能包含Date对象。
2.1。值
JSON值必须是对象,数组,数字或字符串,或者是其中之一 以下三个字面名称:
false null true
如果你想把Date放到严格认为是JSON的东西然后把它取回来,你必须选择一些方法来使用JSON原语(对象,数组,数字,字符串等)进行编码一个约会。
如果你想从JSON中获取一个Date,那么你的JSON必须理解你用来编码Date的约定。
希望这些是可信的和/或官方足以提供帮助。
答案 2 :(得分:1)
这样的事情:
在config / en.yml文件中:
en:
time:
formats:
json: "/Date(%s%L)/"
而不是在视图中:
<%= l(Time.now, :format => :json) %>
请注意,您需要在呈现json的方法中访问帮助程序。因此,如果使用ActiveRecord#to_json方法生成jsons,它将无法工作。
答案 3 :(得分:0)
答案 4 :(得分:0)
这是UNIX纪元(自1970-01-01以来的秒数)对吗?使用DateTime#strftime方法怎么样?
# Taken from the Ruby documentation
seconds_since_1970 = your_date.strftime("%s")
UPDATE :好的,这是毫秒,根据您可以使用your_date.strftime("%Q")
获取ms的文档(但我还没有尝试过)。