轨道上的ruby和javascript之间的时间转换反之亦然?

时间:2014-03-12 18:14:34

标签: javascript ruby-on-rails ruby

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

Ruby on rails:

 Time.now

Javascript:

 new Date()

5 个答案:

答案 0 :(得分:68)

也许最可靠的方法是使用自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

此值可以直接提供给JavaScript Date构造函数:

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

答案 1 :(得分:7)

从jquery到rails:

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

答案 2 :(得分:5)

这两种方法都是等价的,使用:

对于Ruby:

Time.now.httpdate

对于Javascript:

new Date().toUTCString()

两者的输出:

Tue, 04 Jul 2017 14:18:31 GMT

答案 3 :(得分:4)

我认为它会对你有所帮助:

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

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

javascript日期到红宝石日期转换:

在ruby类中使用此代码。

从params属性中获取日期。

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

答案 4 :(得分:1)

使用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'