2013-02-10 25 views
0

當通過Ajax檢索記錄時,我只希望在先前的請求之後更新記錄,而不是所有記錄。我知道查詢應該是這樣的:JavaScript和Rails之間處理時間的正確方法

Post.where("updated_at >= ?", last_requested_at) 

的問題是,last_requested_at必須被存儲在一個Javascript變量,並作爲HTTP查詢字符串傳遞。

如何編碼/解碼Javascript和Rails之間的時間?我是否需要擔心時區?

+0

以前的請求過程密集嗎?如果沒有,我會選擇RobG的解決方案,否則你可能會遇到競爭狀況。 – eabraham 2013-02-10 23:01:45

+0

我不認爲有任何競爭條件。 javascript只讀取數據,不寫。 – 2013-02-10 23:07:18

+0

如果寫入過程尚未完成,則讀取將不包含最新更新。 – eabraham 2013-02-10 23:11:38

回答

0

一個常見的解決方案是將所有時間作爲UTC時間值發送。

Javascript日期對象基於自1970-01-01T00:00:00Z以來的毫秒時間的UTC時間值,UNIX時間值通常是自相同曆元以來的秒數,因此您只需將ms轉換爲秒或乘以1,000(或修剪最後三位數字或連接「000」),你就完成了。

所以從UNIX時間值創建一個JavaScript日期對象:

var date = new Date(UNIXTimevalue * 1000); 

和背部的其他方式:

var UTCTimevalue = date.getTime()/1000 | 0; 

客戶端將處理時區偏移根據系統設置,所以只要他們是正確的,你就可以走了。

相關問題