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