我的 Rails 应用程序以字符串形式返回带有两个 Time 属性的 JSON 对象,但 Firefox 无法将它们正确解析为 Date 对象。
示例 JSON 对象:
{
from: '/Date(2014-11-14 11:26:00)/',
to: '/Date(2014-11-15 12:00:00)/',
...
}
JSON 对象是使用以下 Ruby 方法创建的:
def create_json
{
from: '/Date(' + (self.starts_at.to_s) + ')/',
to: '/Date(' + (self.ends_at.to_s) + ')/',
...
}
为了解析 JSON 对象,正则表达式从字符串值中提取参数并将其作为字符串或数值传递给 Date构造函数并尝试实例化两个新的 Date 对象:
var from = new Date('2014-11-14 11:26:00')
var to = new Date('2014-11-15 12:00:00')
这在 Chrome 中有效,但在 Firefox 中失败。
最佳答案
我测试了几种 Ruby(on Rails)方法,以找出哪种方法最适合在 JavaScript 中实例化新的 Date 对象。结果是:
Ruby 类时间 .to_s ( Link ):
此方法的输出在 Google Chrome 中有效,但在 Firefox 中无效。
Rails .to_formatted_s(:rfc822) ( Link ):
此方法的输出适用于 Google Chrome,仅适用于 Firefox。
当我尝试解析使用德国日缩写的日期字符串时,它在 Firefox 中不起作用(例如“Do, 13 Nov 2014 ...”而不是“Thu, 13 Nov 2014 ...”)
Ruby 类时间 .to_i.to_s ( Link )
此方法的输出在 Google Chrome 中不起作用并且在 Firefox 中不起作用,因为它返回秒而不是毫秒 自纪元以来。
转换后的 Ruby 类 Time (....to_i * 1000).to_s:
此方法的输出适用于 Google Chrome 和 Firefox - 最后;-)。
希望这可以减轻您的痛苦!
关于javascript - Chrome/Firefox 中的 Ruby 时间转 JavaScript 日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26928348/