Ruby Time to JavaScript Date in Chrome/Firefox

Ruby Time to JavaScript Date in Chrome/Firefox

本文关键字:Chrome Firefox in Date Time to JavaScript Ruby      更新时间:2023-09-26

My 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(在Rails上)方法,以找出哪种方法最适合在JavaScript中实例化新的Date对象。结果是:

红宝石上课时间.to_s(链接):

此方法的输出在谷歌浏览器中有效,但在Firefox中不起作用

导轨 .to_formatted_s(:rfc822) (链接):

此方法的输出在谷歌浏览器中有效,在火狐中工作受限

当我尝试解析使用德语日缩写的 dateString 时,它在 Firefox 中对我不起作用(例如"Do,13 Nov 2014 ..."而不是"星期四,2014年11月13日...")

Ruby 类时间 .to_i.to_s (链接)

此方法的输出在谷歌浏览器中不起作用,在Firefox中也不起作用,因为它返回自纪元以来的秒而不是毫秒

转换后的红宝石类时间(... .to_i * 1000).to_s:

此方法的输出适用于谷歌浏览器和火狐浏览器 - 最后 ;-)。

希望这能为你省去一些痛苦!