javascript - Chrome/Firefox 中的 Ruby 时间转 JavaScript 日期

标签 javascript ruby-on-rails ruby date time

我的 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/

相关文章:

javascript - 如何防止 Javascript 将“解析为”?

ruby-on-rails - Ruby on Rails 4 : How to authenticate to Azure AD from Rails Application?

ruby-on-rails - 如何使延迟的工作依赖于另一项工作?

ruby-on-rails - 无法运行迁移。表不存在

Android 使用 Ruby 验证 IAP 订阅服务器端

javascript - "that"变量未引用正确的对象

javascript - 如何仅使用 chrome 开发工具在多个站点中测试脚本?

javascript - 使用 "use strict"和可变范围

ruby - 在 Sinatra 中,如何渲染 json?

ruby - 将数组转换为散列并初始化为一个值