以毫秒为单位将Rails datetime转换为Javascript日期
关于如何将Rails UTC DateTime转换为Javascript日期值,已经进行了一些讨论。然而,当我尝试更进一步并使DateTime动态化时,我看到了错误 最后,我尝试制作一个JS倒计时计时器,它将显示以毫秒为单位将Rails datetime转换为Javascript日期,javascript,ruby-on-rails,datetime,Javascript,Ruby On Rails,Datetime,关于如何将Rails UTC DateTime转换为Javascript日期值,已经进行了一些讨论。然而,当我尝试更进一步并使DateTime动态化时,我看到了错误 最后,我尝试制作一个JS倒计时计时器,它将显示时间之间的剩余秒数。现在(Rails)和一个名为游戏开始的设置UTC时间。我支持将Rails对象(如表中的DateTime)传递到Javascript中 因此,目前,我正在做以下工作: // This is the scrappy way I am storing a temp val
时间之间的剩余秒数。现在
(Rails)和一个名为游戏开始
的设置UTC时间。我支持将Rails对象(如表中的DateTime)传递到Javascript中
因此,目前,我正在做以下工作:
// This is the scrappy way I am storing a temp value for DateTime
<%= content_tag :div, class: "temp_information", data: {temp: @tempquiz} do %>
<% end %>
<div id="timer"></div>
<script>
$(document).ready(function() {
var dt = $('.temp_information').data('temp');
alert(dt);
});
如果我要制作一个倒计时计时器,我需要捕获游戏开始时间(temp正在这样做)并将其转换为JS毫秒(这是中断的)。但是,当我这样做时(代码为),我会得到以下错误:
undefined local variable or method `data'
我一点也不明白,因为我在$(document.ready
的前面一行中定义了数据作为我们在警报中看到的UTC字符串。如果它知道什么是数据
,并且可以在第一个实例中返回警报,那么它如何无法在第二个实例中生成警报 您几乎做对了,将数据传递给ruby中的标记,将在html标记上呈现数据属性。在您的案例中,标签是class='temp\u information'data temp='2016-02-18 09:38:41+0100'
rubyTime
对象可以像这样转换为javascriptdate
红宝石
javascript
所以你的代码是
new Date ($('.temp_information').data('temp'));
可能您必须调用@tempquick.to_s
,但我认为这是自动发生的。您正在混合javascript和ruby代码data
是一个JS变量,但您正试图将其用作
块中的Ruby变量。@MartinSchneider拒绝它。我觉得这很奇怪。我在网上看到了另一个这样做的例子,但这对我来说没有太大意义,为什么它不需要控制器,如果它在标签中。好的,越来越近了。因此,我删除了Ruby变量,并尝试如下操作:vardt=newdate(data)代码>但它返回“无效日期”。在我可以在JS中使用Date
之前,还需要进行一些转换吗?很好。我想我们很接近,但这很奇怪。因此,如果我将行转换为:newdate($('.temp_information').data('temp')代码>,它显示一个关于无效日期的警报。
如果我删除新日期
,并使其成为var temp=$('.temp_information')。数据('temp')代码>,警报将显示UTC字符串,如2016-02-18T23:07:00.000-08:00
。我是否需要一个中间步骤将UTC字符串转换为毫秒,然后才能将其添加到新日期
可能?忘记将您标记为@dre hh。如果你对如何处理这个问题有任何反馈,我想这就是我想要的答案。
Time.now.to_s
=> "2016-02-18 09:38:41 +0100"
new Date("2016-02-18 09:38:41 +0100")
=> Thu Feb 18 2016 09:38:41 GMT+0100 (CET)
new Date ($('.temp_information').data('temp'));