簡體   English   中英

將Rails日期時間轉換為Javascript日期(以毫秒為單位)

[英]Converting Rails datetime to Javascript Date in milliseconds

已經討論了如何將Rails UTC DateTime轉換為Javascript日期值, 如此處 但是,當我嘗試更進一步並使該DateTime動態時,會看到錯誤。

最后,我嘗試制作一個JS倒數計時器,該計時器將顯示Time.now (Rails)和一個稱為game_start UTC時間之間的剩余秒數。 我正在使用此scrappy方法將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);
   }); 

這將返回UTC字符串作為警報,例如2016-02-18T23:07:00.000-08:00 所以我成功地將Rails數據傳遞到JS中。 Ť

他的問題是當我嘗試將其與某些Javascript結合使用時,例如:

 $(document).ready(function() {
    var data = $('.temp_information').data('temp');
    var dt = new Date (<%= data.ToJavaScriptMilliseconds() %>);
    alert(dt);
    });

如果我要創建一個倒計時的計時器,則需要捕獲game_start時間(temp在執行此操作)並將其轉換為JS毫秒(即將中斷)。 但是,當我這樣做時(代碼基於此答案 ),出現以下錯誤:

   undefined local variable or method `data'

我根本不了解它,因為我是在$(document).ready之前的行中定義data ,就像在警報中看到的UTC字符串一樣。 如果它知道什么data並且可以在第一個實例中返回警報,那么它如何在第二個實例中無法生成警報?

您幾乎完全正確,將數據傳遞到ruby中的標簽,將在html標簽上呈現data屬性。 在您的情況下,標簽為<div> class='temp_information' data-temp='2016-02-18 09:38:41 +0100' </div>

ruby Time對象可以像這樣轉換為javascript date

紅寶石

Time.now.to_s
=> "2016-02-18 09:38:41 +0100"

javascript

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'));

可能您必須調用@tempquiz.to_s ,但是我認為它會自動發生。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM