【问题标题】:Time conversion between ruby on rails and javascript vice versa?ruby on rails 和 javascript 之间的时间转换反之亦然?
【发布时间】:2014-04-17 02:35:01
【问题描述】:

如何将 ruby​​ 时间转换为 javascript 时间,反之亦然?

Ruby on rails:

 Time.now

Javascript:

 new Date()

【问题讨论】:

    标签: javascript ruby-on-rails ruby


    【解决方案1】:

    两者中的这些方法是等效的,请使用:

    对于红宝石:

    Time.now.httpdate
    

    对于 Javascript:

    new Date().toUTCString()
    

    两者的输出:

    Tue, 04 Jul 2017 14:18:31 GMT
    

    【讨论】:

      【解决方案2】:

      也许最可靠的方法是对 ruby​​ 使用纪元以来的秒数,对 JavaScript 使用毫秒数。

      在红宝石中:

      t = Time.now
      # => 2014-03-12 11:18:29 -0700
      t.to_f * 1000 # convert to milliseconds since 1970-01-01 00:00:00 UTC.
      # => 1394648309130.185
      

      这个值可以直接给JavaScriptDate构造函数:

      var d = new Date(1394648309130.185)
      d // Wed Mar 12 2014 11:18:29 GMT-0700 (Pacific Daylight Time)
      
      d.getTime() // 1394648309130 (Fractions of a millisecond are dropped)
      

      d.getTime()除以1000的输出可以给ruby的Time.at()

      Time.at( 1394648309130 / 1000.0 )
      # => 2014-03-12 11:18:29 -0700
      

      【讨论】:

      • Time.zone.at(1394648309000 / 1000.0)
      【解决方案3】:

      我想它会帮助你:

      ruby 日期到 javascript 日期的转换:

      <script>
        var date_str = <% Date.today %>;
        var date_obj = new Date(date_str);
      </script>
      

      javascript 日期到 ruby​​ 日期转换:

      在 ruby​​ 类中使​​用此代码。

      从参数属性中获取日期。

      date_str = params[:js_date]
      date_obj = Date.parse(date_str)
      

      更多信息您可以参考:

       http://www.ruby-doc.org/stdlib-1.9.3/libdoc/date/rdoc/DateTime.html
       http://www.w3schools.com/jsref/jsref_parse.asp
      

      【讨论】:

      • 通过考虑这两种语言中的日期对象,我们需要考虑解析机制,假设如果我们给出 new Date(1,1,2015) 那么我们会给出这样的结果 1- 2015 年 2 月,但在 ruby​​ 中,它取为 2015 年 1 月 1 日,它显示 js 从零开始计数几个月
      【解决方案4】:

      使用 strftime 获取毫秒数:

      <script>
        date = new Date(<%= DateTime.now.strftime '%Q' %>);
      </script>
      

      并使用 to_date 解析回 Ruby:

      params[:date].to_date
      

      to_date 接受几种格式:

      '3-2-2001'
      '03/02/2001'
      '2001-02-03'
      '3rd Feb 2001'
      '20010203'
      

      【讨论】:

      • Ups,实际上应该是这样的:) 问题是关于日期的,所以 to_date 是正确的。
      【解决方案5】:

      从 jquery 到 rails:

      "Wed Mar 12 2014 23:45:39 GMT+0530 (IST)".to_time
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-20
        • 2011-01-23
        • 2016-03-03
        • 2012-01-18
        相关资源
        最近更新 更多